模型(model)建好后,django可以根据这个模型(model)在数据库中创建一张数据表格。

Django自带一个数据库迁移(migration)系统来跟踪对模型(models)的修改,然后同步到数据库。

migrate命令会应用到所有在INSTALLED_APPS中的应用。

它会根据当前的模型(models)和数据库迁移(migrations)来同步数据库。

首先,创建一个数据库迁移(migration)。

在项目主目录下,执行以下命令:

python manage.py makemigrations blog

你会看到以下输出:

Migrations for 'blog':

0001_initial.py;

- Create model Post

Django在blog应用下的migrations目录中创建了一个0001——initial.py文件。

可以打开这个文件查看数据库迁移的内容。

也可以使用sqlmigrate命令查看数据库情况。

运行以下命令:

python manage.py sqlmigrate blog 0001

输出如下:

BEGIN;

CREATE TABLE

"blog_post" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,

"title" varchar(250) NOT NULL, "slug" varchar(250) NOT NULL, "body"

text NOT NULL, "publish" datetime NOT NULL, "created" datetime NOT

NULL, "updated" datetime NOT NULL, "status" varchar(10) NOT NULL,

"author_id" integer NOT NULL REFERENCES "auth_user"

("id"));

CREATE INDEX

"blog_post_2dbcba41" ON "blog_post" ("slug");

CREATE INDEX

"blog_post_4f331e2f" ON "blog_post" ("author_id");

COMMIT;

以上SQL语句是为SQLite数据库准备的。

Django生成的表名前缀为应用名之后跟上模型(model)的小写(blog_post),也可以通过在模型(models)的Meta类中使用db_table属性来指定表名。

Django会自动为每个模型(model)创建一个主键,也可以通过在模型(model)中的某个字段上设置primarry_key=True来指定主键。

让我们根据新模型(model)来同步数据库。

运行以下的命令来应用已存在的数据迁移(migrations):

python manage.py migrate

你应该会看到以下行跟在输出的末尾:

Applying blog.0001_initial... OK

我们刚刚为INSTALLED_APPS中所有的应用进行了数据库迁移(migrations),包括我们的blog应用。

在进行了数据库迁移(migrations)之后,数据库会反映我们模型的当前状态。

如果因为添加,删除,或是改变了存在的模型(models)中的字段,或者添加了新的模型(models)而编辑了models.py文件,都需要通过使用makemigrations命令做一次新的数据库迁移(migration)。

数据库迁移(migration)允许Django来保持对模型(model)改变的跟踪。

之后必须通过migrate命令来保持数据库与模型(models)同步。

python数据库迁移命令_创建和进行数据库迁移,同步数据库相关推荐

  1. php mysql oracle数据库表结构图_创建数据库表

    数据库的作用:1.有结构的存储大量数据.2.有效保持数据的一致性.3.方便智能的分析,产生新的有用的信息.4.满足应用的共享和安全的要求. 关系型数据库的基本组成:一个数据库是由一组数据表(table ...

  2. MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句

    文章目录 一.常用的 SQL 语句 (一)查看当前登录用户 (二)查看当前数据库 (三)如何查看全部用户? (四)创建数据库 (五)选择要操作的数据库 (六)创建表 (七)查看表的结构 (八)往表中插 ...

  3. 数据库use命令_使用USE命令切换数据库

    数据库use命令 Creating a database in MySQL doesn't select it for use. You have to indicate it with the US ...

  4. MySQL删除数据库的命令_删除数据库的命令是什么?

    删除数据库的命令是"DELETE DATA",具体格式为"DROP DATABASE [IF EXISTS] 数据库名;",可以删除数据库中的所有表格并同时删除 ...

  5. mysql新建数据库关系图_创建数据库关系图失败解决方法

    本文章介绍了关于创建数据库关系图失败解决方法,有需要的同学可以参考一下下. 在新建或附加数据库后,想添加关系表,结果出现下面的错误: 此数据库没有有效所有者,因此无法安装数据库关系图支持对象.若要继续 ...

  6. mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库

    表索引异常,修复msql表索引(表引擎:myisam) myisamchk --safe-recover /usr/local/mysql/data/ename_news/dede_arccache ...

  7. python调用dos命令_基于Python执行dos命令并获取输出的结果

    这篇文章主要介绍了基于Python执行dos命令并获取输出的结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import os import s ...

  8. python发送cmd命令_用Python 执行cmd命令

    我们通常可以使用os模块的命令进行执行cmd 方法一:os.system os.system(执行的命令) # 源码 def system(*args, **kwargs): # real signa ...

  9. ssma迁移助手_如何使用SQL Server迁移助手(SSMA)和SSIS将MySQL表迁移到SQL Server

    ssma迁移助手 介绍 (Introduction) In this article, we will demonstrate how to migrate MySQL tables to SQL S ...

最新文章

  1. 看过漫改,但你看过「改漫」吗?AI 一键让影视变漫画
  2. 使用OpenVINO加速Pytorch表情识别模型
  3. VLC搭建RTSP服务器的过程 -测试通过
  4. ASP.NET Core MVC上传、导入、导出知多少
  5. [Redis6]常用数据类型_List列表
  6. Kubernetes-负载均衡器Load Balancer(十八)
  7. 4s测试电池的软件,只需4步,不去4S店不要专业设备,你也能测出动力电池的容量...
  8. mysql效率索引_mysql下普通索引和唯一索引的效率对比
  9. vSphere虚拟化使用第三方备份方案常见CBT故障实战处理
  10. json.dumps与json.dump的区别 json.loads与json.load的区别(简洁易懂)
  11. 网易云音乐自建服务器,自建私有云音乐服务–Subsonic
  12. Tekla二次开发 第4节 曲梁及双截面梁
  13. 微信小程序实现组件之间的传值
  14. win7磁盘清理_电脑磁盘已满怎么清理?磁盘清理的注意事项有哪些?
  15. 阿里云Centos8 yum报错Failed to synchronize cache for repo ‘BaseOS‘解决方案,通过换文件的方式来解决。
  16. 百度地图的反地址解析(通过经纬度查询地址信息)
  17. html背景图片溢出,如何清除背景图片溢出?
  18. 优化算法系列-模拟退火算法(1)——基本原理枯燥版本
  19. c语言五子棋如何添加计时,五子棋教程:计时
  20. 为什么k8s天然适合微服务?

热门文章

  1. [IT茶馆]李彦宏称暂不打算进军网游
  2. 输出英文字母的后继字母 c语言,Java 【打印俄文的英文字母】
  3. 商品管理系统Java实现
  4. 计算机如何安装cpu风扇,cpu风扇安装,小编教你cpu风扇怎么安装
  5. PS2060L-ASEMI肖特基二极管PS2060L
  6. 这些人都在使用超级表格
  7. Freeswitch 开发日记
  8. 华为emui11鸿蒙,鸿蒙2.0系统回退EMUI11工具下载
  9. PCL 点云DBSCAN聚类算法
  10. python绘图之matlibplot