python使用mysql的一些坑

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 注意:如果你用的是python3.x,直接去看第四个问题遇到的第一个问题正常来说直接执行pip安装,就是可以的,但是MySQL-python偏偏比较独特pip install MySQL-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

参考链接:时光不写博客-_mysql.c:44:10:fatal error:'my_config.h'...

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL是关系型DB,依赖预定义的表格结构,适合结构化数据和复杂查询,但扩展性有限。NoSQL提供灵活的非结构化数据存储(如JSON),无统一查询语言,但能横向扩展,适用于大规模、高并发场景。选择取决于应用需求和扩展策略。
112 1
|
30天前
|
XML 关系型数据库 MySQL
python将word(doc或docx)的内容导入mysql数据库
用python先把doc文件转换成docx文件(这一步也可以不要后续会说明),然后读取docx的文件并另存为htm格式的文件(上一步可以直接把doc文件另存为htm),python根据bs4获取p标签里的内容,如果段落中有图片则保存图片。(图片在word文档中的位置可以很好的还原到生成的数据库内容) 我见网上有把docx压缩后解压获取图片的,然后根据在根据xml来读取图片的位置,我觉得比较繁琐。用docx模块读取段落的时候还需要是不是判断段落中有分页等,然而转成htm之后就不用判断那么多直接判断段落里的样式或者图片等就可以了。
21 1
|
1月前
|
SQL 关系型数据库 MySQL
Python怎么操作Mysql数据库
Python怎么操作Mysql数据库
49 0
|
1月前
|
SQL 关系型数据库 MySQL
python如何操作mysql数据库
python如何操作mysql数据库
24 0
|
1月前
|
关系型数据库 MySQL Python
python安装MySQL-python:EnvironmentError解决办法
python安装MySQL-python:EnvironmentError解决办法
31 1
|
30天前
|
SQL 关系型数据库 MySQL
python在mysql中插入或者更新null空值
这段代码是Python操作MySQL数据库的示例。它执行SQL查询从表`a_kuakao_school`中选取`id`,`university_id`和`grade`,当`university_id`大于0时按升序排列。然后遍历结果,根据`row[4]`的值决定`grade`是否为`NULL`。若不为空,`grade`被格式化为字符串;否则,设为`NULL`。接着构造UPDATE语句更新`university`表中对应`id`的`grade`值,并提交事务。重要的是,字符串`NULL`不应加引号,否则更新会失败。
19 2
|
1月前
|
存储 关系型数据库 MySQL
Python导入Excel数据到MySQL数据库
Python导入Excel数据到MySQL数据库
75 0
|
8月前
|
SQL 关系型数据库 MySQL
[Python]使用Python操作MySQL数据库(pymysql)
[Python]使用Python操作MySQL数据库(pymysql)
|
9月前
|
SQL 关系型数据库 MySQL
如何使用python操作MySQL数据库
如何使用python操作MySQL数据库
1029 0
|
SQL 存储 关系型数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库