Linux Python3.5,连接Mysql时遇到的问题

前言

因Linux下有自带的python2系列,系统中有一些自带的工具需要用到2系列的(比如yum),所以还不能进行卸载。
安装3系列后,2与3并存,但安装第三方库,用import导入时会发现模块不存在

在Python环境下,如果想操作MySQL数据库,难免会调用相应的包,比如mysqldb
使用pip安装时发现找不到合适的版本

[root@izwz94jtz9hbdq165vpxpxz ~]# pip install mysqldb
Collecting mysqldb
Could not find a version that satisfies the requirement mysqldb (from versions: )
No matching distribution found for mysqldb

经查 mysqldb 支持到 python3.4,3.5以上版本需要使用 pymysql

[root@izwz94jtz9hbdq165vpxpxz ~]# pip install pymysql
Collecting pymysql
Downloading http://mirrors.aliyun.com/pypi/packages/c6/42/c54c280d8418039bd2f61284f99cb6d9e0eae80383fc72ceb6eac67855fe/PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)
100% |████████████████████████████████| 81kB 1.1MB/s 
Installing collected packages: pymysql
Successfully installed pymysql-0.7.11

进入python ide环境,用 import 导入 pymysql,提示没有此模块

[root@izwz94jtz9hbdq165vpxpxz ~]# python
Python 3.5.0 (default, Jun 11 2017, 00:13:04) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymysql
Traceback (most recent call last):
File "", line 1, in 
ImportError: No module named 'pymysql'     ##没有此模块

查找pymysql的路径,发现安装在了2系列的site-packages,所以使用python3会找不到

[root@izwz94jtz9hbdq165vpxpxz ~]# find / -name pymysql
/usr/lib64/python2.7/site-packages/pymysql


想要把第三方库安装到3系列下,怎么办呢?

一、安装setuptools

1、wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
2、tar -zxvf setuptools-19.6.tar.gz
3、cd setuptools-19.6
4、python setup.py build
5、python setup.py install

使用第5步安装时报错:
RuntimeError: Compression requires the (missing) zlib module
解决办法:
需要安装zlib-devel包,yum install zlib-devel

注意事项:此处用python是因为我安装后设置的软连接是指向python,如果指向python3的话,第4、5步也请改成python3

小伙伴们也可以通过官方模块库来下载

二、安装pip

1、wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
2、tar -zxvf pip-8.0.2.tar.gz
3、cd pip-8.0.2
4、python setup.py build
5、python setup.py install

若出现下述问题,说明setuptools没安装好,可以回看当时安装时的日志(查报错原因,看是否缺少依赖包等)

[root@izwz94jtz9hbdq165vpxpxz pip-8.0.2]# python3 setup.py build
Traceback (most recent call last):
File "setup.py", line 6, in 
from setuptools import setup, find_packages
ImportError: No module named 'setuptools'

至此 pip3 安装完成,接下来安装第三方库(pymysql)后进行导入测试

[root@izwz94jtz9hbdq165vpxpxz ~]# pip3 install pymysql
Collecting pymysql
Downloading http://mirrors.aliyun.com/pypi/packages/c6/42/c54c280d8418039bd2f61284f99cb6d9e0eae80383fc72ceb6eac67855fe/PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)
100% |████████████████████████████████| 81kB 588kB/s 
Installing collected packages: pymysql
Successfully installed pymysql-0.7.11

测试是否真正的给python3装上了这个模块(而不是装在python2上了呢)

[root@izwz94jtz9hbdq165vpxpxz ~]# python
Python 3.5.0 (default, Aug 15 2017, 23:19:45) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymysql
>>> 

哈哈哈 当你看到“>>>”时就表明 ok啦
接着继续测试一下数据库连接(用户名和密码根据实际情况填写)

>>> conn = pymysql.connect(host='localhost', port=3306, user='root',passwd='',db='zyptest')
>>> cur = conn.cursor()
>>> sql1 = 'select id,no from student'
>>> cur.execute(sql1)
4
>>> rows = cur.fetchall()
>>> for data in rows:
...     print(data)
... 
(1, 'A1')
(2, 'A2')
(3, 'A3')
(4, 'A4')
>>>cur.close()
>>>conn.close()
>>>

你可能感兴趣的:(Linux Python3.5,连接Mysql时遇到的问题)