[python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4278字,纯文字阅读大概需要7分钟。
内容图文
for ‘blog‘: blog\migrations\0001_initial.py: - Create model Category - Create model Post - Create model Tag - Add field tags to post
-
F:\pythoncode\django\workspace\blogproject (djanoproject_env) λ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, blog, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying blog.0001_initial... OK Applying sessions.0001_initial... OK F:\pythoncode\django\workspace\blogproject (djanoproject_env) λ
- python manage.py makemigrations
- 类似于linux的创建文件夹migrations,不同地方在于:这里还创建一个文件:0001_initial.py。换言之,执行python manage.py makemigrations 创建文件: F:\pythoncode\django\workspace\blogproject\blog\migrations\0001_initial.py
- 0001_initial.py作用: Django 用来记录我们对模型做了哪些修改的文件。目前来说,我们在 models.py 文件里创建了 3 个模型类,Django 把这些变化记录在了 0001_initial.py 里。
- python manage.py migrate :
- 不过此时还只是告诉了 Django 我们做了哪些改变,为了让 Django 真正地为我们创建数据库表,接下来又执行了
python manage.py migrate
命令。Django 通过检测应用中 migrations\ 目录下的文件,得知我们对数据库做了哪些操作,然后它把这些操作翻译成数据库操作语言,从而把这些操作作用于真正的数据库。 - 可以看到命令的输出除了 Applying blog.0001_initial... OK 外,Django 还对其它文件做了操作。这是因为除了我们自己建立的 blog 应用外,Django 自身还内置了很多应用,这些应用本身也是需要存储数据的。可以在 settings.py 的
INSTALLED_APP
设置里看到这些应用,当然我们目前不必关心这些。 -
blogproject/settings.py INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘blog‘,
- 不过此时还只是告诉了 Django 我们做了哪些改变,为了让 Django 真正地为我们创建数据库表,接下来又执行了
-
对于了解数据库语言的人,你可以运行下面的命令看看 Django 究竟为我们做了什么:
python manage.py sqlmigrate blog 0001
你将看到输出了经 Django 翻译后的数据库表创建语句,这有助于你理解 Django ORM 的工作机制。
-
F:\pythoncode\django\workspace\blogproject (djanoproject_env) λ python manage.py sqlmigrate blog 0001 BEGIN; -- -- Create model Category -- CREATE TABLE "blog_category" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(100) NO T NULL); -- -- Create model Post -- CREATE TABLE "blog_post" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "title" varchar(70) NOT NU LL, "body" text NOT NULL, "create_time" datetime NOT NULL, "modified_time" date NOT NULL, "excerpt" v archar(200) NOT NULL, "author_id" integer NOT NULL REFERENCES "auth_user" ("id"), "category_id" integ er NOT NULL REFERENCES "blog_category" ("id")); -- -- Create model Tag -- CREATE TABLE "blog_tag" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(70) NOT NULL ); -- -- Add field tags to post -- CREATE TABLE "blog_post_tags" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "post_id" integer NOT NULL REFERENCES "blog_post" ("id"), "tag_id" integer NOT NULL REFERENCES "blog_tag" ("id")); CREATE INDEX "blog_post_4f331e2f" ON "blog_post" ("author_id"); CREATE INDEX "blog_post_b583a629" ON "blog_post" ("category_id"); CREATE UNIQUE INDEX "blog_post_tags_post_id_4925ec37_uniq" ON "blog_post_tags" ("post_id", "tag_id"); CREATE INDEX "blog_post_tags_f3aa1999" ON "blog_post_tags" ("post_id"); CREATE INDEX "blog_post_tags_76f094bc" ON "blog_post_tags" ("tag_id"); COMMIT; F:\pythoncode\django\workspace\blogproject
View Code
[python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)
标签:技术分享 size message import pre float margin running mod
本文系统来源:http://www.cnblogs.com/liuzhipenglove/p/7338549.html
内容总结
以上是互联网集市为您收集整理的[python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)全部内容,希望文章能够帮你解决[python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。