如何从16.04的python 3连接到MySQL db

我按照本指南,以便我可以安装python 3的MySQL连接器。

https://stackoverflow.com/questions/43501080/how-to-connect-to-mysql-db-from-python-3-on-ubuntu-16

不幸的是,当我键入:

(env) pip install mysqlclient Collecting mysqlclient Downloading mysqlclient-1.3.12.tar.gz (89kB) 100% |████████████████████████████████| 92kB 1.4MB/s Building wheels for collected packages: mysqlclient Running setup.py bdist_wheel for mysqlclient ... error Complete output from command /home/hugh/SAT/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-sbgaxask/mysqlclient/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpqgsp3qwwpip-wheel- --python-tag cp35: running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-3.5 copying _mysql_exceptions.py -> build/lib.linux-x86_64-3.5 creating build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/__init__.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/compat.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/release.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/times.py -> build/lib.linux-x86_64-3.5/MySQLdb creating build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants running build_ext building '_mysql' extension creating build/temp.linux-x86_64-3.5 x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,12,'final',0) -D__version__=1.3.12 -I/usr/include/mysql -I/usr/include/python3.5m -I/home/hugh/SAT/env/include/python3.5m -c _mysql.c -o build/temp.linux-x86_64-3.5/_mysql.o _mysql.c:32:20: fatal error: Python.h: No such file or directory compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- Failed building wheel for mysqlclient Running setup.py clean for mysqlclient Failed to build mysqlclient Installing collected packages: mysqlclient Running setup.py install for mysqlclient ... error Complete output from command /home/hugh/SAT/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-sbgaxask/mysqlclient/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-d4xggqn_-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/hugh/SAT/env/include/site/python3.5/mysqlclient: running install running build running build_py creating build creating build/lib.linux-x86_64-3.5 copying _mysql_exceptions.py -> build/lib.linux-x86_64-3.5 creating build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/__init__.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/compat.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/release.py -> build/lib.linux-x86_64-3.5/MySQLdb copying MySQLdb/times.py -> build/lib.linux-x86_64-3.5/MySQLdb creating build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-3.5/MySQLdb/constants running build_ext building '_mysql' extension creating build/temp.linux-x86_64-3.5 x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,12,'final',0) -D__version__=1.3.12 -I/usr/include/mysql -I/usr/include/python3.5m -I/home/hugh/SAT/env/include/python3.5m -c _mysql.c -o build/temp.linux-x86_64-3.5/_mysql.o _mysql.c:32:20: fatal error: Python.h: No such file or directory compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- Command "/home/tom/SAT/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-sbgaxask/mysqlclient/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-d4xggqn_-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/hugh/SAT/env/include/site/python3.5/mysqlclient" failed with error code 1 in /tmp/pip-build-sbgaxask/mysqlclient/ 

你能给些建议么。

你需要python开发库来构建python模块:

 sudo apt install python3-dev libpython3-dev 

应该为你照顾。

但是在Ubuntu中添加它的推荐方法是使用Ubuntu存储库。 因此,要为python3安装mysql绑定,请运行

 sudo apt install python3-mysqldb 

这将安装从Python 3连接到mysql所需的绑定,并确保它将与系统的其他包一起升级。 建议这样做,除非您特别需要更新的版本,或者Ubuntu存储库中没有该软件包。

MySQLdb不能与Python 3一起工作。如果可能你从MySQLdb切换,那么我建议你使用MySQL连接器Python 。 因为它适用于Python 2和3,它是MySQL的官方Oracle驱动程序,用于处理Python。

 pip install mysql-connector-python 

如果pip失败,您可以从https://dev.mysql.com/downloads/connector/python/下载安装程序

即使用DEB软件包安装MySQL Connector 请参阅本指南以下载和安装

此模块遵循Python数据库API规范v2.0(PEP 249)。

然后使用mysql连接器python的connect()方法连接MySQL.pass所需的参数为connect()方法。 即主机,用户名,密码和数据库名称