使用pymysql连接mysql数据库
一、django
连接mysql
数据库
1、如果要使用
mysql
数据库DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'djangotest', #数据库名称 'USER': 'root', # 链接数据库的用户名 'PASSWORD': 'root', # 链接数据库的密码 'HOST': '127.0.0.1', # mysql服务器的域名和ip地址 'PORT': '3306', # mysql的一个端口号,默认是3306 } }
2、如果你是使用
pymysql
连接工具必须要在站点__init__.py
的文件配置django
中默认使用MySQLDB
数据库import pymysql pymysql.install_as_MySQLdb()
二、创建表操作
- 1、根据上面方法配置
mysql
连接 2、在
models
中创建一个model
from django.db import models # Create your models here. class Student(models.Model): name = models.CharField(max_length=100, verbose_name='学生姓名') gender = models.CharField(max_length=2, verbose_name='性别') age = models.IntegerField(max_length=100, verbose_name='年龄') mobile = models.CharField(max_length=11, verbose_name='手机号码')
3、运行命令创建数据库迁移文件
每一次运行该下面命令就会在组件的
migrations
中生成一个文件python manage.py makemigrations
4、运行命令生成表
python manager.py migrate
5、查看创建的表
会生成很多表,先不去理会别的表
mysql> show tables; +----------------------------+ | Tables_in_django_test | +----------------------------+ | app01_studentmodal | | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 11 rows in set (0.00 sec) mysql>
6、创建的表命名规则(模块名_类名)
7、查看表结构
创建表的时候会默认创建一个自动递增的主键id字段
mysql> desc app01_studentmodal; +--------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | NO | | NULL | | | gender | varchar(2) | NO | | NULL | | | age | int(11) | NO | | NULL | | | mobile | varchar(11) | NO | | NULL | | +--------+--------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) mysql>
三、关于自定义表名
1、在
model
中添加一个类class Meta()
class School(models.Model): """ 创建一个学校的model """ school_name = models.CharField(max_length=100, verbose_name='学校名称', null=True, blank=True) # 定义表别名 class Meta(object): db_table = 'school'
2、查看表
mysql> show tables; +----------------------------+ | Tables_in_django_test | +----------------------------+ | app01_classmodel | | app01_studentmodel | | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | | school | +----------------------------+ 13 rows in set (0.00 sec) mysql>