Django项目中MySQL数据库的安装与配置
(1)安装MySQL数据库
此处略过。
(2)安装Python包MySQLdb
执行pip install mysql-python
命令即可。
若是安装过程有问题,可安装下述软件包,然后再行安装MySQLdb
1 | yum install python-setuptools |
进入Python交互式命令行,输入import MySQLdb
检测是否安装成功。
(3)在django工程中的settings.py中配置数据库
在settings.py文件中修改DATABASES字段如下:
1 | DATABASES = { |
至此,MySQL数据库的配置基本上是已经配置好了。
Django项目中对MySQL数据库进行初始化
(1)使用create database命令创建数据库
(2)在app中编写model
每一个model都是一个Python类,且继承自django.db.models.Model类,模型与数据库息息相关,一个模型对应一个数据库表(在设计model时,可想象成是在设计相应的数据库表)。model中每一个属性对应数据库表中的一个字段。在自定义app的目录中有models.py,我们可以将我们的model都编写到这个文件中,如下为一个model的范例:
1 | from django.db import models |
(3)生成数据库表
执行python manage.py makemigrations app_name
命令(app_name可不写,表示对project下所有app有效),该命令会在app的migrations目录中生成一些Python文件,是用来和数据库交互的一些接口等。然后再执行命令python manage.py migrate
就可以在DB中生成数据表了,这个命令才会真正地去操作数据库。当我们在models.py中增加或修改model等,都需要执行上面两个命令,才能在数据库中生效。
备注:执行python manage.py migrate
命令后,django会自动生成数据库表名,生成的规则为“appname_modelname”,我们可以通过在model类中嵌入class Meta来修改。
Django项目中常见增删改查操作
前提申明,我们在models.py定义了Student的model如下:
1 | class Student(): |
现在详细的增删改查的方法如下所示:
(1)增加操作
法一:
1 | stu1 = Student(name="Aaron", age=23) |
法二:
1 | Student.objects.create(name="Aaron", age=23) |
(2)删除操作
1 | Student.objects.all().delete() #删除表中所有数据 |
(3)修改操作
法一:
1 | stu = Student.objects.get(name='Aaron') |
法二(更新多个字段):
1 | Student.objects.get(name='Aaron').update(name='Zhang', age=20) |
法三(更新所有字段):
1 | Student.objects.all().update(name='Zhang') |
(4)查询操作
1 | Student.objects.all() #查表中所有记录 |
使用django工具管理数据库
migration,翻为“迁移”,django会将每一次模型的model的变更记录到migration文件中。简单来说,在appname/migrations目录下有很多migration文件,我们可以理解每一个文件都对应了对数据的一次变更操作,而且我们就可以通过sqlmigrate工具将migration文件转换成原始的SQL语句。在Django中,关于数据库的操作有如下一些常用的命令:
(1)python manage.py makemigrations
根据models.py中的定义的模型,生成appname/migrations下的Python文件。若是对某个model的局部进行修改,执行完makemigrations后,会生成一个新的Python文件,该Python文件只对应这个局部修改。所以当我们每次在修改model.py时,执行makemigrations命令,都会在appname/migrations下生成一些Python文件。
appname/migrations目录下的migration文件一般为0001_xxx.py,0002_xxx.py,0003_xxx.py….等,可以理解为每一次修改model,都会对应一个migration文件。
备注:python manage.py makemigrations
后可以紧接着appname,表示只对指定app的model的变更来生成相应的migrations文件。
(2)将makemigrations生成的migration文件,应用到数据库上
1 | python manage.py migrate |
(3)清空数据库中表的内容,但表不会删除
1 | python manage.py flush |
(4)查看django项目中所有的app的migration文件
1 | python manage.py showmigrations |
(5)查看指定的migration文件对应的原始SQL语句
1 | python manage.py sqlmigrate appname migrationname |
举例来说,python manage.py sqlmigrate appname 0002_auto_20171026_1045
表示查看名称为appname的APP的0002_auto_20171026_1045.py文件对应的原始SQL语句。
学习资料参考于:
http://blog.csdn.net/ZCF1002797280/article/details/49559863