django 2.2和mysql使用的常见问题

可能是由于Django使用的MySQLdb库对Python3不支持,我们用采用了PyMySQL库来代替,导致出现各种坑,特别是执行以下2条命令的是时候:

python manage.py makemigrations
or
python manage.py inspectdb

报错1:(提示你的mysqlclient版本过低),无论你是否执行pip install mysqlclient安装的最新版的,都抛出:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

使用注释大法解决:找到自己Python安装路劲下的Python36-32\Lib\site-packages\django\db\backends\mysql\base.py文件 将文件中的如下代码注释(可能需先关闭pycharm IDE)

if version < (1, 3, 3):
  raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

报错2:(str类型没有decode方法)

py3默认str是unicode编码,通过encode方法编码成bytes类型,后者才有decode解码方法。提示错误来源:Python36\lib\site-packages\django\db\backends\mysql\operations.py", line 149, in last_executed_query

解决办法:
    1. 再报错的Python36\lib\site-packages\django\db\backends\mysql\operations.py文件最上面添加
    from django.utils.encoding import force_str
    2. 将last_executed_query方法中如下代码注释
    query = getattr(cursor, '_executed', None)
    if query is not None:
      query = query.decode(errors='replace')
    return query
    3. 在注释的代码下添加如下代码:
    return force_str(getattr(cursor, '_executed', None), errors='replace')
然后再次执行python manage.py makemigrations 成功

参考连接: https://www.zhangshengrong.com/p/281om6qgNw/

原文地址:https://www.cnblogs.com/heaven-xi/p/11422355.html

时间: 2024-10-16 11:34:43

django 2.2和mysql使用的常见问题的相关文章

django整合原有的mysql数据库

虽然django适合从零开始构建一个项目,但有时候整合原有的数据库也在所难免,下面以django整合我的mysql作说明. mysql数据是我从京东上抓取的数据,数据表名为jd,演示如图 下面将jd整合到django中,操作如下 1.修改settings.py [email protected]:/home/jd# vim jd/settings.py ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #'N

mysql几个常见问题汇总

mysql几个常见问题汇总 一. mysql下的清屏命令 \! clear:Ctrl+shift+L:Ctrl+L Linux下的清屏命令 Clear ; Ctrl+L; Shift+ctrl+L 二. 查看mysql版本的四种方法 1:在终端下:mysql -V. 以下是代码片段: [[email protected] ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中:mysql

python django 站点管理 配置mysql数据库

运行命令mysql -uroot -p进入mysql 新建一个数据库mydatabase 在/mysite/mysite目录下 编辑settings.py文件: 默认数据库为sqlite: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mydatabase', } } mysql数据库配置: DATABASES = { 'default': { 'ENGINE': 'django.db.ba

mysql数据库开发常见问题及优化

mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的策略选择都可能导致系统性能甚至功能上的缺陷. 恰巧就在前几天,本人所在公司的云事业部举办了一场关于 mysql 的技术交流会,其中一个 part 正是聚焦于开发过程中 mysql 数据库设计及使用的常见问题,并提出相关优化方案.根据会议内容并查阅相关资料,本人对这个 part 进行了一次小结,结合自

mysql cluster的常见问题

MySQL Cluster是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster存储引擎,允许在1个Cluster中运行多个MySQL服务器. MySQL Cluster是一种技术,该技术允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单点故障. 总结了些移植到MySQL Cluster要注意的常见问题. 关于连接 MySQL集群适合用

MySQL MHA配置常见问题

MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步.尽管如此,在部署配置的过程中,由于疏忽总难以避免这样或那样的错误.本文是对MHA配置中常见问题的一个汇总,供大家参考.http://hovertree.com/menu/mysql/ 1.非root用户等效性环境等效性配置  a.添加所有节点(含管理节点)主机名及IP到host文件,所有节点操作  b.生成基于非root用户(如使用mysq

python django中如何配置mysql参数

在成功安装python-mysql后,开始配置django的mysql连接配置 vi settings.py 修改 DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    }} 为 DATABASES = {    'default':{        'ENGINE':'django.d

python初探总结(pip、Django、mysqldb,mysql、sqlite3、apache, virtualenv安装配置)

安装配置: Python可应用于多平台包括 Linux 和 Mac OS X.一般的 Linux 发行版本都自带 Python,Mac OS X 最新版也自带了 Python,也就是已经安装好了,不需要再配置. linux和Mac环境下配置python: Python会安装在 /usr/lib/python** 目录中,Python库安装在/usr/local/lib/pythonXX,XX为你使用的Python的版本号. 找到记得这个位置可用于以后配置下python中的安装相应的lib库: M

Django及其配置(Mysql)

MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V):他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象和数据库的对象(ORM),视图负责与用户交互(页面),控制器(C)接收用户的输入调用模型和视图完成用户的请求. Django的MTV模式本质上与MVC模式没什么差别,也是各组件之间为了保持松耦合的关系,只是定义上有些许不同,Django的MTV分别代表: Mode(模型):负责业务对象与数据库的对象(ORM) Template