python - MySQLdb 和 _mysql 版本不兼容 : how to upgrade _mysql

标签 python mysql mysql-python

我正在运行 MySQLdb v1.2.3 并收到以下错误:

LookupError: unknown encoding: utf8mb4

This answer建议将 MySQLdb 更新到版本 1.2.5。我更新了,现在收到这个错误:

ImportError: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 3, 'final', 0)

我不确定如何着手更新 _mysql 或这将如何改变我的设置。这只是一个 python 模块还是以某种方式连接到我的 MySQL 服务器?

编辑:我试过运行以下三种方法:

sudo pip uninstall mysql-python
sudo pip install mysql-python

sudo pip uninstall mysql-python
sudo pip install mysql-python==1.2.5

sudo pip install mysql-python --upgrade

卸载时我得到

/usr/local/lib/python2.7/dist-packages/_mysql.so
/usr/local/lib/python2.7/dist-packages/_mysql_exceptions.py
/usr/local/lib/python2.7/dist-packages/_mysql_exceptions.pyc
Proceed (y/n)? y
Successfully uninstalled MySQL-python-1.2.3

在那之后我无法导入 MySQLdb_mysql 但重新安装总是给我 _mysql 版本 1.2.3。

第二次编辑/解决方案: 结果是 _mysql 安装在服务器上的两个不同位置。卸载/安装,如上所述,将 _mysql 升级到 v1.2.5,但每当我随后导入 MySQLdb 时,优先级都给了 _mysql 的另一个版本,它没有被 pip 触及。

最佳答案

根据user manual :

If you want to write applications which are portable across databases, use MySQLdb, and avoid using this module directly. _mysql provides an interface which mostly implements the MySQL C API. For more information, see the MySQL documentation. The documentation for this module is intentionally weak because you probably should use the higher-level MySQLdb module.

基本上,_mysql 是 MySQL C API 的面向对象包装器。

This post解释了如何使用 pip 升级一个模块、一个模块及其所有依赖项或它们的任意组合。我认为,鉴于声明,MySQLdb 不依赖于 _mysql,并且它们没有一起升级。请访问共享的链接。

编辑: 经过一些挖掘,我发现 Ubuntu 不能很好地支持 MySQL,而且 pip 也不起作用。

所以我去了这个link并做了:

apt-get 安装 python-dev libmysqlclient-dev

做之前

sudo pip install MySQL-python

这对我来说效果很好。对于你,我认为你可能需要升级甚至 apt-get remove 然后重新安装上面的两个 Ubuntu 模块 python-devlibmysqlclient-dev

对我来说,第一次安装时它就可以工作了;转到终端并输入 python 解释器,然后键入:

import MySQLdb
MySQLdb.__version__    #I got '1.2.5'
import _mysql
_mysql.__version__    #Again, I got '1.2.5'

关于python - MySQLdb 和 _mysql 版本不兼容 : how to upgrade _mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853790/

相关文章:

Python:从 MySQL 查询中转义单引号

python 和 ctypes 访问具有嵌套结构的 C++ 类

python - 正确使用 GAE ndb.CompulatedProperty

python - django-tables2 中带有 render_* 方法的列不起作用

mysql - 如何在 mysql 中显示具有计算的运行时值(即不在数据库中)的虚拟列?

php - 值 1 存储在数据库中而不是文本框值/PHP-MySql

mysql 当 UNION 显示 [Err] 1111 - 组函数的无效使用

python - Flask和Scrapy如何整合?

python - 使用 Python 将 bool 值插入 MySQL

mysql - 为不同的 id MySQL 插入相同的行