django2.2 和 PyMySQL版本兼容问题

错误信息为

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

错误原因:

因为Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持Python3,因此这里将MySQL驱动设置为pymysql。由此产生的版本兼容问题。

pymysql安装方法:

#安装pymysql
pip install pymysql

#__init__.py
import pymysql
pymysql.install_as_MySQLdb()

解决办法:
1. django降到2.1.4版本
2. 修复源码
2.1 找到Python环境下 django包,并进入到backends下的mysql文件夹

# 使用此命令可以看到对应的文件夹目录
➜ daliyfresh pip install pymysql
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Requirement already satisfied: pymysql in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (0.9.3)

2.2 找到base.py文件,注释掉 base.py 中如下部分(35/36行)

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

2.3 此时仍然报错,找到operations.py文件,将decode改为encode

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

解决办法:

#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

测试,执行数据迁移

python manage.py makemigrations
python manage.py migrate

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • django连接mysql配置方法总结(推荐)

    最近在学习django,学到第五章模型时,需要连接数据库,然后,在这里分享一下方法. 起初是不知道怎样配置mysql数据库,但是还好,django的官网上面有相关的配置方法,下面就直接给分享一下. 这是settings文件里面的基础配置,使用的是sqlite,那我们需要连接其他数据库呢? DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mydatabase', } } 下面是mysql的配置方

  • Django安装配置mysql的方法步骤

    近期做那个python的开发,今天就来简单的写一下Django安装配置mysql的方法步骤 安装mysql 首先安装pymysql pip install pymysql 然后安装mysqlclient pip install mysqlclient 在安装过程中可能会报类似以下错误(因为我的已经安装成功了,找了类似的图): 在window下安装python的包会出现各种问题,https://www.lfd.uci.edu/~gohlke/pythonlibs/这个网站就是专门用于解决windo

  • Django使用Mysql数据库已经存在的数据表方法

    使用scrapy爬取了网上的一些数据,存储在了mysql数据库中,想使用Django将数据展示出来,在网上看到都是使用Django的models和makemigration,migrate命令来创建新表,并使用. 可是我的数据已经存在了已经创建好,并且已经存储有数据了,不能再重新创建新表了. 了解Django的表明和models名称的映射关系就可以让Django使用已经存在的表. 假如在Django存在models如下: from django.db import models # Create

  • python Django连接MySQL数据库做增删改查

    1.下载安装MySQLdb类库http://www.djangoproject.com/r/python-mysql/2.修改settings.py 配置数据属性 复制代码 代码如下: DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.        'NAME': 'djang

  • django+mysql的使用示例

    Django中每一个模型model都对应于数据库中的一张表,每个模型中的字段都对应于数据库表的列.方便的是,django可以自动生成这些create table, alter table, drop table的操作.其次Django为咱们也提供了后台管理模块(Django-Admin),主要功能是通过后台管理来实现客户端的功能,可以对数据进行增删改查.也可以通过该功能进行二次开发 Django中的mysql配置 在上期内容,我们了解了settings.py配置信息的内容,其中DATABASES

  • Django如何配置mysql数据库

    Django项目默认使用sqlite 数据库,但是我想用mysql数据库,应该如何配置呢. Django连接mysql数据库的操作,是通过根模块的配置实现的,在项目根模块的配置文件settings.py中,我们可以查询到如下DATABASES的配置信息: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } 解释一下上

  • Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法

    发现问题 最近由于卸载Mysql时将很多相关依赖包都卸载了,重装mysql后启动django出现如下错误: django.core.exceptions.ImproperlyConfigured:Error loading MySQLdb module: No module named 'MySQLdb". Did you install mysqlclient or MySQL-python? 由于开发时python版本为3.6.4,MySQL-python不支持python3,经过一番折腾安

  • Django读取Mysql数据并显示在前端的实例

    前言: 由于使用Django框架来做网站,需要动态显示数据库内的信息,所以读取数据库必须要做,写此博文来记录. 接下来分两步来做这个事,添加网页,读取数据库: 一.添加网页 首先按添加网页的步骤添加网页,我的网页名为table.html, app名为web: table.html放到相应目录下: forms.py文件提前写好: 修改views.py,做好视图 from django.shortcuts import render from web import forms def table(r

  • 使用Django连接Mysql数据库步骤

    链接mysql步骤 第一步:在终端下载pymysql文件–pip install pymysql 第二步:在gjango项目的__init__文件中添加代码 import pymysql pymysql .install_as_MySQLdb() 第三步:找到mysql的连接源,然后填信息,如果没有mysql驱动,需要下载MySQL驱动 mysql的配置:进入settings文件中找到DATABASES配置信息 DATABASES = { 'default': { 'ENGINE': 'djan

  • django2.2 和 PyMySQL版本兼容问题

    错误信息为 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 错误原因: 因为Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持Python3,因此这里将MySQL驱动设置为pymysql.由此产生的版本兼容问题. pymysql安装方法: #安装pymysql pip install pymysql #__init

  • MySQL 8.0 驱动与阿里druid版本兼容问题解决

    本文主要介绍了MySQL 8.0 驱动与阿里druid版本兼容问题解决,具体如下: 注意: 这个异常表面druid数据源的版本与MySql 8.0的驱动版本不匹配,解决方法如下: 确保MySql 8.0的驱动如下 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version&

  • Java SE 9 多版本兼容 JAR 包示例

    目录 说明 环境准备 命令行编译示例 Maven 项目配合多版本 Jar 示例 说明 Java 9 版本中增强了Jar 包多版本字节码文件格式支持,也就是说在同一个 Jar 包中我们可以包含多个 Java 版本的 class 文件,这样就能做到 Jar 包升级到新的 Java 版本时不用强迫使用方为了使用新 Jar 包而升级自己的业务模块 Java 版本,也不用针对不同最低支持 Java 版本提供不同的 Jar,真正的做到了一个 Jar 包兼容所有的目的. 本文通过以下示例来说明多版本 Jar

  • 详解PHP版本兼容之openssl调用参数

    背景与问题解决方式 老项目重构支付宝部分代码整合支付宝新的sdk时发现验签总是失败,才发现是open_verify最后的参数传输问题.而open_sign同样如此.本文主要说明open_verify的解决方式和代码解析.而问题的解决方式也是修改最后的加密类型参数,解决方式代码如下: // 将最后的常量OPENSSL_ALGO_SHA256修改成字符串 openssl_verify($data, base64_decode($sign), $res, "sha256WithRSAEncryptio

  • Spring Boot整合ElasticSearch实现多版本兼容的方法详解

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和SpringBoot进行结合使用. ElasticSearch介绍 ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行封装,提供了 REST API 的操作接口 ElasticSearch作为一个高度可拓展的开源全文搜索和分析引擎,可用于快速地对大数据进行存储,搜索和分析.

  • python3.7.3版本和django2.2.3版本是否可以兼容

    很多小伙伴在学习Django的时候,总是搞不定版本的问题,下面来一起看一张表,轻松解决Python版本和Django版本的兼容问题. Django和Python兼容对照表 如上表所示: Django 1.11版本兼容Python 2.7.3.4.3.5.3.6.3.7(added in 1.11.17) Django 2.0版本兼容Python 3.4.3.5.3.6.3.7 Django 2.1.2.2版本兼容Python 3.5.3.6.3.7 Django 3.0版本兼容Python 3.

  • 关于Android添加fragment后版本不兼容问题

    Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的.难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊.Fragment的出现就是为了解决这样的问题.你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生

  • java项目jar包与jdk的版本不兼容的问题解决

    这篇文章主要介绍了java项目jar包与jdk的版本不兼容的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在我们搭建框架或者引入jar包是,总是会因为版本不统一导致版本兼容问题,而且错误还不好找, 今天就遇到了一个问题Unsupported major.minor version 52.0并记录下解决方案 错误原因: 我当时使用的是jdk7,因为公司是传统行业,所以jdk的版本不是很到,而我现在需要搭建一套新的项目框架,我引入了一些最

  • SQLServer数据库从高版本降级到低版本实例详解

    SQLServer数据库从高版本降级到低版本实例详解 由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度

  • SQLServer 2008数据库降级到2005低版本

    由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度太大,如2000升级到2012,都不会怎么报错.除非使

随机推荐