通常在生产部署中使用mysql,sqlite,postgresql数据库,当然Django也支持oracle,sqlServer等数据库。常用的链接mysql数据的包有mysqlclient和pymysql。
mysqlclient
是一个 Python 扩展模块,用于连接 MySQL 数据库服务器。它提供了数据库连接和操作的功能,允许 Python 程序与 MySQL 数据库进行交互。mysqlclient
是 MySQLdb
的一个分支,它兼容 Python 2 和 Python 3,并且是 MySQL 数据库在 Python 中的一个常见连接方式。
PyMySQL
是一个 Python 的第三方库,用于连接 MySQL 数据库服务器。它是一个纯 Python 编写的 MySQL 客户端库,实现了 MySQL 协议,允许 Python 程序与 MySQL 数据库进行交互。PyMySQL
是一个替代 mysqlclient
(或 MySQLdb
)的选项,尤其是在需要避免编译 C 扩展的情况下,因为 PyMySQL
是纯 Python 实现的,安装起来通常更简单。
至于两个包的效率如何,目前差别不是很大,也没有什么明显区别。
数据库配置是项目选择的数据类型,不同的数据库需要设置不同的数据库引擎,常用的数据库引擎如下,sqlserver下周单独讲解,需要安装第三方包:
'django.db.backends.sqlite3', 'django.db.backends.oracle', 'django.db.backends.mysql', 'django.db.backends.postgresql_psycopg2',
项目创建时,默认创建了sqlite3数据库,小型项目常用数据库,嵌入式系统常用,占用资源很少,sqlite3数据库的配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } }
如果使用mysql作为数据库,需要安装连接mysql的第三方包,mysqldb是django最开始常用的包,但是由于mysqldb不在支持python3,所以django2.0以后,就不再使用mysqldb作为链接模块了,而是选择mysqlclient作为默认的链接模块(可以更换)。
在配置mysql之前,先安装好mysqlclient,在安装过程中会遇到一些问题,但是很简单就解决了,这里就不介绍如何安装mysqlclient了。网上有很多讲解。
DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', #'NAME': BASE_DIR / 'db.sqlite3', 'ENGINE':'django.db.backends.mysql', 'NAME':'django_db', 'USER':'root', 'PASSWORD':'123456', 'HOST':'127.0.0.1', 'PORT':3306, } }
注意配置PORT一定是数字,不能是字符串。
pymysql链接mysql
除了使用mysqlclient以外,还可以使用pymysql模块链接mysql数据库。
pymysql安装成功后(pip install pymysql),只需要在Django项目的django_standard的__init__.py文件
加入以下代码即可,settings.py文件中的数据库配置信息无需修改:
import pymysql pymysql.install_as_MySQLdb()
如果为了验证是否更换成功了默认的mysql链接库,可以先卸载mysqlclient,这样可以排除干扰。
注意在使用Mysql8.0以上版本,有可能报错,因为数据库的用户名加密的方式改变了,如何解决网上有很多教程,就不在这里介绍,postgresql,oracle,sqlite3的settings.py配置除了驱动不一样,其他几个配置都一样,后面专门写一篇关于链接sqlserver和MongoDB数据的。