美文网首页颠覆你的Python实践百人计划
Linux Python3.5,连接Mysql时遇到的问题

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

作者: 倔强的潇洒小姐 | 来源:发表于2017-08-16 00:20 被阅读51次

    前言

    因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 "<stdin>", line 1, in <module>
    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 <module>
    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时遇到的问题

        本文链接:https://www.haomeiwen.com/subject/jsnurxtx.html