本文中,苏南大叔描述一下django的数据库迁移migrate命令。本文只是数据库迁移命令migrate的简单应用,侧重于数据库的导入操作,并非数据库迁移命令的全部相关内容。那么,如何导入已有的数据库结构信息到新的项目里面呢?请查看苏南大叔在本文中的讲述。

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - django-migrate
django默认项目,如何导入数据库?如何查看数据表?(图9-1)

本文测试环境:macdjango@2.2.4python@3.7.4

启动项目时的错误提示

可能大家也注意到了,在使用默认命令启动django默认项目的时候,会有个黄色的错误提示信息。

django-admin startproject mysite

提示信息如下:

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

截图如下:

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - django-start-db-error
django默认项目,如何导入数据库?如何查看数据表?(图9-2)

这个提示信息,大意就是:默认的django项目中使用了数据库(后台管理),但是并没有导入数据库结构。所以,会有这个提示信息。

设置默认数据库

django默认使用的数据库是sqlite,其配置信息存在于下面的文件中:
mysite/settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - db_sqlite
django默认项目,如何导入数据库?如何查看数据表?(图9-3)

首先,解决django配套的数据库是什么数据库的问题。根据官方文档描述,默认支持sqlite,无需任何额外设置,就可以支持sqlite。这个操作不得不说有点溜。要知道,在electron程序中,启用个sqlite支持,不知道难倒了多少英雄汉。所以,这个默认支持sqlite的操作,不得不点赞。

另外,django推荐支持使用的数据库是postgresql,注意,居然不是mysql或者mariadb。这个操作就更加有点匪夷所思了。在大家都在推荐mysql的时候,django居然不推荐mysql。官方描述是因为其官方开发人员比较喜欢postgresql。这款数据库,苏南大叔还没有使用过,所以,暂时不做评论。

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - postgresql_www
django默认项目,如何导入数据库?如何查看数据表?(图9-4)

其次,django虽然不推荐mysql,但是也是支持mysql的。甚至更多的数据库类型都是支持的,比如oracle。目前来说,出于初学的目的,苏南大叔这里也就不节外生枝了。数据库方面还是使用默认的sqlite

参考文档:

设置数据库timezone

常和数据库打交道的话,大家就会知道,数据库也是有timezone的概念的。否则对于大家来说,可能会出现八小时时差的一些问题。django中的默认timezone居然是America/Chicago,这个很出人意料,官方解释为历史遗留问题...

这里不废话,需要修改文件mysite/settings.py,设置为中国的标准时间(推荐):

timezone='Asia/Shanghai'

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - mysite-settings-timezone
django默认项目,如何导入数据库?如何查看数据表?(图9-5)

关于这个timezone的问题,苏南大叔在后续的文章中,会再做内容补充。目前可以参考文档:

迁移数据

这里的迁移数据,主要指的是导入数据结构及测试数据。命令如下:

python manage.py migrate

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - django-migrate
django默认项目,如何导入数据库?如何查看数据表?(图9-6)

然后,在项目根目录下面的sqlite数据库文件中,就有了对应的django后台管理的结构表了。其导入的数据来自于mysite/settings.pyINSTALLED_APPS中的设置。而默认情况下:

mysite/settings.py:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - installed-apps
django默认项目,如何导入数据库?如何查看数据表?(图9-7)

查看数据库

默认的sqlite数据库文件位于项目根目录下面,名为db.sqlite3。可以查看的工具很多,比如大家最喜欢的navicat,就可以打开这个sqlite数据库,打开之后截图如下:

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - sqlite-connection
django默认项目,如何导入数据库?如何查看数据表?(图9-8)

苏南大叔:django默认项目,如何导入数据库?如何查看数据表? - sqlite-table
django默认项目,如何导入数据库?如何查看数据表?(图9-9)

更多其它的sqlite管理工具,可以点击下面的链接查看:

相关链接

结束语

本文中,苏南大叔描述了django项目中,默认后台管理功能所需要的数据库导入及查看的方式。更多django的经验文字,请支持苏南大叔的相关博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   python    django

本站的忠实读者小伙伴,正在阅读下面这些文章: