Django 3.0入门与实践
上QQ阅读APP看书,第一时间看更新

3.5 配置数据库

前面提到Django应用程序的配置信息都存储在mysite/settings.py文件中,数据库配置也不例外。settings.py是一个标准的Python模块,其中存放了很多模块变量,数据库配置信息就是其中的一个变量。默认情况下Django使用SQLite作为数据库。SQLite是一个免安装的数据库系统,非常简单易学,Python已经提供了相应的支持模块,因此不需要做任何事情就可以在Django中使用SQLite。

虽然SQLite有如此多的优势,但是,当你将Django程序真正应用到生产环境时,可能还是会因为各种问题而不得不更换数据库,事实上几乎没有人在生产环境使用SQLite。因此,Django官方提供了对4种数据库的支持:PostgreSQL、MySQL、Oracle和SQLite。对于不同的数据库,Django提供了不同的数据库绑定(database binding),对此后续会详细介绍,本章使用默认参数就可以了。

下面是默认的数据库配置:

关于更多的数据库配置信息请参考第5章。

数据库配置完成后就可以迁移(migrate)数据库了,这也一并解决了前面运行runserver命令时的异常“You have 17 unapplied migration(s)”:

    > python manage.py migrate

migrate命令根据settings.py中的INSTALLED_APPS创建必要的数据库表,每一个Django项目都会默认启用一些应用,举例如下。

django.contrib.admin:管理员站点,你很快就会使用它。

django.contrib.auth:认证授权系统。

djan go.contrib.contenttypes:内容类型框架。

django.contrib.sessions:会话框架。

django.contrib.messages:消息框架。

django.contrib.staticfiles:管理静态文件的框架。

命令行会显示出执行了哪些脚本,从脚本名字能够大致推断出创建了哪些数据库表。也可以使用数据库客户端程序打开数据库,在这里使用SQLiteStudio管理我的数据库,如下图所示。

此时可以看到数据库已经包含10个表,而某些表中还同时添加了数据,例如auth_permission表,如下图所示。

以上就是migrate命令为我们做的所有事情,关于migrate命令的更多用法请参考第4章。