文章目录
一、数据迁移
数据迁移是将项目里定义的模型生成相应的数据表。主要的迁移指令如下:
# 第一次生成自定义模型与django admin自带模型迁移文件,后续只生成新增模型迁移文件。后面加App名称只生成指定app迁移文件
python manage.py makemigrations
# 第一次只运行自定义模型与django admin自带模型生成的迁移文件,后续只运行新增模型迁移文件。后面加App名称只运行指定app迁移文件
python manage.py migrate
注意:
-
新增模型字段必须将属性
null
和blank
设为True
或者为模型字段设置默认值(设置属性default
),否则执行makemigrations
指令会提示字段修复信息。 -
如果要重复执行
migrations
文件夹的某个.py文件,就只需在数据表django_migrations
里删除相应的文件执行记录。一般情况下不建议采用这种操作,因为这样很容易出现异常,比如数据表已存在的情况下,再次执行相应的.py
文件会提示table "xxx" already exists
异常。 -
migrate
指令还可以单独执行某个.py
文件,首次在项目中使用migrate
指令时,Django
会默认创建内置功能的数据表,如果只想执行index
的migrations
文件夹的某个.py
文件,那么可以在migrate
指令里指定文件名。D:\MyDjango>python manage.py migrate index 0001_initial
Operations to perform:
Target specific migration: 0001_initial, from index
Running migrations:
Applying index.0001_initial... OK -
migrate
指令根据migrations
文件夹的.py
文件创建数据表,但在数据库里,数据表的创建和修改离不开SQL
语句的支持,因此Django
提供了sqlmigrate
指令,该指令能将.py
文件转化成相应的SQL
语句。
二、数据导入导出
在实际开发过程中,我们经常对数据库的数据进行导入和导出操作,比如网站重构、数据分析和网站分布式部署等。除了使用数据库可视化工具实现数据的导入与导出之外,
Django
还为我们提供操作指令(loaddata
和dumpdata
)来实现数据的导入与导出操作。
1. 数据导出
-
dumpdata
指令末端使用了符号>
和文件名data.json
,这是将项目所有的数据都存放在data.json
文件中,并且data.json
的文件路径在项目的根目录(与项目的manage.py
文件在同一个路径)。 -
如果只想导出某个项目应用的所有数据或者项目应用里某个模型的数据,那么可在
dumpdata
指令末端设置项目名称或项目名称的某个模型名称。导出项目的所有数据
python manage.py dumpdata>data.json
导出项目应用index的所有数据
python manage.py dumpdata index >data.json
导出项目应用index的模型PersonInfo的数据
python manage.py dumpdata index.Personinfo>person.json
2. 数据导入
-
若想将导出的数据文件重新导入数据库里,则可使用loaddata指令完成,该指令使用方式相对单一,只需在指令末端设置需要导入的文件名即可。
-
loaddata指令根据数据文件的model属性来确定当前数据所属的数据表,并将数据插入数据表,从而完成数据导入。
python manage.py loaddata data.json
一般情况下,数据的导出和导入最好以整个项目或整个项目应用的数据为单位,因为数据表之间可能存在外键关联,如果只导入某张数据表的数据,就必须考虑该数据表是否设有外键,并且外键所关联的数据表是否已有数据。