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

本文测试环境:mac、django@2.2.4、python@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默认使用的数据库是sqlite,其配置信息存在于下面的文件中:mysite/settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
首先,解决django配套的数据库是什么数据库的问题。根据官方文档描述,默认支持sqlite,无需任何额外设置,就可以支持sqlite。这个操作不得不说有点溜。要知道,在electron程序中,启用个sqlite支持,不知道难倒了多少英雄汉。所以,这个默认支持sqlite的操作,不得不点赞。
另外,django推荐支持使用的数据库是postgresql,注意,居然不是mysql或者mariadb。这个操作就更加有点匪夷所思了。在大家都在推荐mysql的时候,django居然不推荐mysql。官方描述是因为其官方开发人员比较喜欢postgresql。这款数据库,苏南大叔还没有使用过,所以,暂时不做评论。

其次,django虽然不推荐mysql,但是也是支持mysql的。甚至更多的数据库类型都是支持的,比如oracle。目前来说,出于初学的目的,苏南大叔这里也就不节外生枝了。数据库方面还是使用默认的sqlite。
参考文档:
设置数据库timezone
常和数据库打交道的话,大家就会知道,数据库也是有timezone的概念的。否则对于大家来说,可能会出现八小时时差的一些问题。django中的默认timezone居然是America/Chicago,这个很出人意料,官方解释为历史遗留问题...
这里不废话,需要修改文件mysite/settings.py,设置为中国的标准时间(推荐):
timezone='Asia/Shanghai'
关于这个timezone的问题,苏南大叔在后续的文章中,会再做内容补充。目前可以参考文档:
迁移数据
这里的迁移数据,主要指的是导入数据结构及测试数据。命令如下:
python manage.py migrate
然后,在项目根目录下面的sqlite数据库文件中,就有了对应的django后台管理的结构表了。其导入的数据来自于mysite/settings.py中INSTALLED_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',
]
查看数据库
默认的sqlite数据库文件位于项目根目录下面,名为db.sqlite3。可以查看的工具很多,比如大家最喜欢的navicat,就可以打开这个sqlite数据库,打开之后截图如下:


更多其它的sqlite管理工具,可以点击下面的链接查看:
相关链接
结束语
本文中,苏南大叔描述了django项目中,默认后台管理功能所需要的数据库导入及查看的方式。更多django的经验文字,请支持苏南大叔的相关博客文章: