python manage.py migrate
提示:“迁移”就是把 Django 默认自带应用的数据表迁移到我们自己的创建的数据库里,有点像搬家的意思,migrate 这个单词的含义就是“迁移”。
如果你是在 Linux 或者 Mac 操做系统,利用终端启动项目后,提示会更加明显,如下图 2 所示:python3 manage.py migrate
migrate 是 manage.py 的子命令,它主要用来将应用的数据表同步到数据库中。执行后,它会检查 INSTALLED_APPS 里配置的应用列表,依次为每个应用创建所需要的数据表。import pymysql pymysql.install_as_MySQLdb()这就表示用 PyMySql 代替 MySQLdb 来实现 Django 与 MySQL 数据库的交互。按照上述的方式配置完成后,再执行迁移命令,就可以顺利完成项目的初始化工作了。
SHOW TABLES;
输出结果如下所示,这就是在项目数据库中生成的表:mysql> show tables; +----------------------------+ | Tables_in_bookstoredb | +----------------------------+ | 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 | +----------------------------+ 10 rows in set (0.01 sec)这里使用一个命令就完成了数据库的迁移工作,但是有两点问题值得我们思考,migrate 是怎么知道要创建哪些表的,而且如果这些表修改了,它又怎样去维护这些表与数据库中已经迁移的表保持一致呢?下面我们来解答这个疑惑。
python manage.py makemigrations
makemigrations 命令会检测应用目录下是否存在 migrations 目录,如果没有则进行创建。首先,会根据应用的表结构定义生成一个 0001_inital.py 文件,里面定义了数据表的结构。
python manage.py makemigrations
python manag.py migrate
select * from django_migrations;
输出结果如下所示:mysql> select * from django_migrations; +----+--------------+------------------------------------------+----------------------------+ | id | app | name | applied | +----+--------------+------------------------------------------+----------------------------+ | 1 | contenttypes | 0001_initial | 2020-03-31 17:53:24.328380 | | 2 | auth | 0001_initial | 2020-03-31 17:53:24.772333 | | 3 | admin | 0001_initial | 2020-03-31 17:53:25.304430 | | 4 | admin | 0002_logentry_remove_auto_add | 2020-03-31 17:53:25.389557 | | 5 | admin | 0003_logentry_add_action_flag_choices | 2020-03-31 17:53:25.400529 | | 6 | contenttypes | 0002_remove_content_type_name | 2020-03-31 17:53:25.483671 | | 7 | auth | 0002_alter_permission_name_max_length | 2020-03-31 17:53:25.499663 | | 8 | auth | 0003_alter_user_email_max_length | 2020-03-31 17:53:25.523571 | | 9 | auth | 0004_alter_user_username_opts | 2020-03-31 17:53:25.540536 | | 10 | auth | 0005_alter_user_last_login_null | 2020-03-31 17:53:25.584193 | | 11 | auth | 0006_require_contenttypes_0002 | 2020-03-31 17:53:25.589585 | | 12 | auth | 0007_alter_validators_add_error_messages | 2020-03-31 17:53:25.599557 | | 13 | auth | 0008_alter_user_username_max_length | 2020-03-31 17:53:25.617511 | | 14 | auth | 0009_alter_user_last_name_max_length | 2020-03-31 17:53:25.635472 | | 15 | auth | 0010_alter_group_name_max_length | 2020-03-31 17:53:25.653411 | | 16 | auth | 0011_update_proxy_permissions | 2020-03-31 17:53:25.664380 | | 17 | sessions | 0001_initial | 2020-03-31 17:53:25.688552 | +----+--------------+------------------------------------------+----------------------------+ 17 rows in set (0.00 sec)
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有