我正在运行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
时,优先级都被赋予{p}未触及的_mysql
的其他版本。
答案 0 :(得分:2)
根据user manual:
如果要编写可跨数据库移植的应用程序,请使用MySQLdb,并避免直接使用此模块。 _mysql提供了一个主要实现MySQL C API的接口。有关更多信息,请参阅MySQL文档。该模块的文档故意弱,因为您可能应该使用更高级别的MySQLdb模块。
基本上,_mysql是面向对象的MySQL C API包装器。
This post解释了如何使用pip升级一个模块,一个具有所有依赖关系的模块或其任何组合。我认为,鉴于声明,MySQLdb没有依赖于_mysql,并且它们没有一起升级。请访问分享的链接。
编辑:经过一番挖掘,我发现Ubuntu不能很好地支持MySQL,只是pip不起作用。
所以我去了link并做了:
apt-get install python-dev libmysqlclient-dev
之前
sudo pip install MySQL-python
这对我很有用。对于您,我认为您可能需要升级甚至apt-get删除,然后重新安装上述两个Ubuntu模块python-dev
和libmysqlclient-dev
。
对我来说,这是第一次安装时的工作;转到终端并输入python解释器,然后键入:
import MySQLdb
MySQLdb.__version__ #I got '1.2.5'
import _mysql
_mysql.__version__ #Again, I got '1.2.5'