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
的经验文字,请支持苏南大叔的相关博客文章:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。