Python3替换MySQLdb,使用pymysql代替(python3连接mysql)(python3创建django默认数据库)

python3安装django初始化数据库报错

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclie

百度得到的结论是python3不支持mysqldb了,可以使用pymysql来代替

处理方法

找到(是默认生成的那个模块,就是用命令生成django项目的时候默认生成的第一个模块)自己项目模块的__init__.py文件,
在这里插入图片描述
配置一下pymysql就好。

import pymysql
pymysql.install_as_MySQLdb()

接着报错

说mysqlclient版本太低

 File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 37, in 
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

参考解决连接

django 使用PyMySQL连接mysql
解决Django配置pymysql因版本报错的解决方案
主要是修改一下文件的内容,这里记录一下mac的安装路径。

MAC电脑python默认的安装路径

base.py的文件路径

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql

修改一下内容,注释掉这两行
在这里插入图片描述

编码问题报错(这个问题为我没遇到,先记录一下,说不定以后用得着)

AttributeError: ‘str’ object has no attribute ‘decode’

解决方法
修改文件operations.py,这个文件的路径和上面的那个文件的路径上一样的。

#找到operations.py文件(146行),将decode改为encode
#linux vim 查找快捷键:?decode

if query is not None:
    query = query.decode(errors='replace')
return query

#改为
if query is not None:
    query = query.encode(errors='replace')
return query

再试试

python3 manage.py  migrate

如果成功了的话会数据库会生成这些表,这些表其实也可以不用的。
具体看文档 编写你的第一个 Django 应用,第 2 部分
Python3替换MySQLdb,使用pymysql代替(python3连接mysql)(python3创建django默认数据库)_第1张图片

你可能感兴趣的:(python)