Django支持多种数据库,包括默认的SQLite3以及MySQL和PostgreSQL等数据库,使用哪一种数据库需要在项目的settings.py中进行进行配置,如果使用默认的SQLite3数据库,这个配置是Django创建项目时已经添加好的。
数据库设置
python3不支持MySQLdb,可用pymysql代替。
在项目文件夹下的_init_.py添加如下代码即可。
Import pymysql
关于项目文件夹下的各个文件,已在上文详细介绍
为一个Django项目配置mysql数据库,在项目的settings.py中配置,在这个配置文
件中,数据库配置相关如下:
例如我们已经有了一个数据库:djangoday17
可以看到,Django中默认数据库是sqlite3,如果配置为mysql,只需在DATABASE中配置即可
迁移数据库
Django中通过以下命令来迁移数据库,在每次创建Model时,执行该命令,
在数据库中生成对应的表:
$ python manage.py makemigrations
$ python manage.py migrate
接下来,我们编写模型文件(models.py)的代码。
这里值得一提的是,在更换数据库时,“models.py”中的代码不用做任何更改,只需要在
“settings.py”文件中更改数据库的配置。
创建数据表的流程一共3步:
1.模型文件(models.py)中编写数据表所对应的类;
2.通过“manage.py”的“makemigrations”命令创建迁移项;
3.通过“manage.py”的“migrate”命令创进行迁移。
也就是说,我们在模型文件(models.py)中创建了数据表对应的类,剩下的工作都是
通过“manage.py”的命令,让Django自动去执行。
编写模型文件(models.py)
假设我们创建一个商品信息表。
模型文件(models.py)中,需要创建类以及类的属性(变量),实际上类名对应的是
数据库的表名,而属性(变量)对应的是数据表的列(字段)。
在上方代码中,我们创建了一些不同类型的字段的对象,包括字符串类型(CharField)、
整数类型(IntegerField)和浮点数类型(FloatField)。
比较常见的参数有几种:
max_length:该字段最大字符数量限制。
null :如果为True,则该字段默认为null值。
blank :如果为True,则该字段可以为空值。
default :该字段的默认值。
primary_key :该字段设置为主键。
unique:该字段的值必须是当前数据列中唯一的。
choices:该字段的值为二元数组或列表,例如:((1,2),(a,b))。
当我们编写完模型文件(models.py),接下来就可以进行数据迁移,
将模型文件(models.py)中的数据迁移到数据库。
创建迁移项与执行迁移操作
在创建迁移项之前,我们需要先在全局配置文件(settings.py)中,将当前应用添加到“INSTALLED_APPS”列表。
然后,在命令行终端中,通过命令创建迁移项。
接下来,我们再通过“migrate”命令进行数据迁移操作。
当我们完成以上步骤,在数据库中就会出现一个名为“MySite_goods”(应用名称_小
写类名)的数据表。
不过,在创建数据表的时候,我们可能会遇到这两种情况:
“models.py”模块中的类遗漏了某个字段或者某个字段觉得没有用了;
“models.py”模块中,类的某个字段写错了类型或者参数。
当发生这样的情况,创建的数据表就不符合要求,而不能正常使用,我们必须修改表
的结构,或者更改字段的设置。
通过类进行数据操作
先导入模型文件(models.py)中的类:from MySite.models import Goods
添加数据有两种方式,我们分别演示。
第一种:通过create()方法添加。
第二种:通过save()方法添加。
或者使用另外一种写入参数的方式。
查询数据
查询数据我们可以使用下列语句。
通过all()方法,能够获取数据库中所有的数据对象。
通过values()方法,能够看到数据库中所有数据的值。
最基本的Django + Mysql已经介绍结束,列外还有多表的联查会在后面推出