python3中使用mysql报错ModuleNotFoundError: No module named 'MySQLdb'。
原因是:
在python2.x中用mysqldb,但是在python3.x中已经不支持那个组件了。
取而代之的是:pymysql。
首先使用pip install pymysql 安装pymysql。
下载以后,如何让当前的 Django 通过 PyMySQL 来
连接 MySQL 数据库呢? 方法很简单。
在/path/to/project/project/__ini__.py 这个空白文件中添加下面两行代码:
import pymysql pymysql.install_as_MySQLdb()
django要连接mysql数据库还需要修改配置文件setting.py
配置代码如下:
# MySQL DATABASES = { 'default':{ 'ENGINE':'django.db.backends.mysql', 'HOST':'127.0.0.1', 'PORT':'3306', 'NAME':'guest', # 数据库名 'USER':'username', 'PASSWORD':'password', 'OPTIONS':{ 'init_command':"SET sql_mode='STRICT_TRANS_TABLES'" }, } } # mysql5.0以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。 # ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。 # TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。 # STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。 #
注意,配置文件中的数据库名必须是新的库,如果库里已经有表,就会出问题。
进入manage. py所在目录,执行命令 manage.py syncdb程序会自动初始化数据库,创建django需要的所有数据表。当我们编写web程序用到session的时候,没有初始化数据库会报错,因为django是把session的信息存储在了数据库中。
另,django1.9之后的版本都取消了syncdb,1.8还可以用,但是会提示即将取消。所以以后建议这样初始化:
先 python manage.py makemigrations [appname]
再 python manage.py migrate [appname]
如此,我们就可以在django项目中使用mysql数据库了。