• python使用mysql的一些坑


    注意:如果你用的是python3.x,直接去看第四个问题

    遇到的第一个问题

    • 正常来说直接执行pip安装,就是可以的,但是MySQL-python偏偏比较独特

    pip install MySQL-python
    • 报错
    _mysql.c:44:10: fatal error: 'my_config.h' file not found
        #include "my_config.h"
                 ^~~~~~~~~~~~~
        1 error generated.
        error: command 'cc' failed with exit status 1

    解决第一个问题

    • 执行brew install mysql-connector-c

    brew install mysql-connector-c
    • 如果这一步直接完成,那就可以继续pip install MySQL-python了,应该会成功
    • 但是我在这一步执行失败了

    遇到第二个问题

      • brew install mysql-connector-c报错

    Error: Cannot install mysql-connector-c because conflicting formulae are installed.
      mysql: because both install MySQL client libraries
    
    Please `brew unlink mysql` before continuing.

    解决第二个问题

    • 按照报错的提示,执行brew unlink mysql
    • 没有发生什么意外,执行完毕,继续执行brew install mysql-connector-c
    • 'mysql-connector-c'安装成功
    • 执行brew link --overwrite mysql,重新连接mysql(这一步我没有做)
    • 然后再执行pip install MySQL-python,如果成功了就搞定了
    • 神奇的是,我在这一步又失败了

    遇到的第三个问题

    • 上面的步骤走完以后,执行pip install MySQL-python,报错

    Collecting mysql
      Downloading https://files.pythonhosted.org/packages/06/ef/c4efbf2a51fb46aba9be03a973638d9539c9ca10a5259b2cbb1a66133b2e/mysql-0.0.1.tar.gz
    Collecting MySQL-python (from mysql)
      Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/private/var/folders/zn/t8xxx4m149s9jqp1810ndrz80000gn/T/pip-install-oHMKPE/MySQL-python/setup.py", line 17, in <module>
    metadata, options = get_config()
          File "setup_posix.py", line 53, in get_config
    libraries = [ dequote(i[2:]) for i in libs if i.startswith(compiler_flag("l")) ]
          File "setup_posix.py", line 8, in dequote
    if s[0] in ""'" and s[0] == s[-1]:
        IndexError: string index out of range

    解决第三个问题

      • 修改mysql的配置文件mysql_config,修改前记得cp一下 
        执行mysql_config,查看一下路径
      • 打开文件vim mysql_config,找到libs="$libs -l ",改为libs="$libs -lmysqlclient -lssl -lcrypto "

    libs="-L$pkglibdir"
    # libs="$libs -l "                              # 原来的
    libs="$libs -lmysqlclient -lssl -lcrypto "      # 更改后的
    embedded_libs="-L$pkglibdir"
    embedded_libs="$embedded_libs -l "
    • 再来一遍pip install MySQL-python
    • 终于成功了!可喜可贺!可喜可贺!
    • 小心翼翼的试一下,import MySQLdb,真的成功了

    发现第四个问题


    • 开始使用的时候,发现自己用的是python2.x的环境,换成python3.x继续用
    • import MySQLdb的时候又出问题了,ModuleNotFoundError: No module named 'MySQLdb'
    • 尝试使用pip3 install MySQL-python再安装一次,报错

    Collecting MySQL-python
      Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/private/var/folders/07/v8slhf9x5zsbbd8_9cd5ztnh0000gp/T/pip-install-oh_74ez5/MySQL-python/setup.py", line 13, in <module>
    from setup_posix import get_config
          File "/private/var/folders/07/v8slhf9x5zsbbd8_9cd5ztnh0000gp/T/pip-install-oh_74ez5/MySQL-python/setup_posix.py", line 2, in <module>
    from ConfigParser import SafeConfigParser
        ModuleNotFoundError: No module named 'ConfigParser'
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/07/v8slhf9x5zsbbd8_9cd5ztnh0000gp/T/pip-install-oh_74ez5/MySQL-python/

    解决第四个问题

    • 查到了原因,感到一阵阵的无语

    In Python 3, ConfigParser has been renamed to configparser for PEP 8 compliance. It looks like the package you are installing does not support Python 3.
    在Python3中,ConfigParser为了符合PEP8规范,已重命名为configparser。看起来你正在安装的软件包不支持Python3。

      • 因为不支持python3,建议使用pip install pymysql,安装也没那么多套路
      • 其实也找到了解决方案(没有测试,我也不知道对不对,单纯的记录一下)

        • 方法一, 修改six模块为

    try:
        import configparser
    except:
        from six.moves import configparser

    方法二

    cp /usr/local/lib/python3.7/configparser.py /usr/local/lib/python3.7/ConfigParser.py

    最后是交流群887934385,探讨技术,学习提升。

  • 相关阅读:
    DRT移植各种成熟稳定的C工具包到DELPHI
    Delphi Event Bus 2.1发布了
    这个真恶心人!Delphi 11.1的Listview不能继承DynamicAppearance
    使用TBufferedLayout提升UI的显示效率
    Delphi 格式化代码调整每行的宽度
    Delphi 11.1 试用报告
    java POI Excel 导入
    Json在线生成Java实体类 http://www.esjson.com/jsontopojo.html
    正则校验记录先记录日后补充
    轻松搞懂POST与PUT的区别
  • 原文地址:https://www.cnblogs.com/pypypy/p/12026108.html
Copyright © 2020-2023  润新知