文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

linux下python 连接mysql

2023-01-31 06:19

关注

【引用】linux下测试python连接mysql

2011-05-05 13:56:26|  分类: 计算机 |  标签: |字号大中小 订阅

本文引用自simon-zzm《linux下测试python连接mysql》

[整理人 :张子萌 2011-4-10] 
测试环境:
centos,Python 2.6.5,setuptools-0.6c11,MySQL-python-1.2.2,mysql 5.1.44
首先需要安装zlib、zlib-devl、python和python-devl。
yum install zlib zlib-devl

安装使用包,如果已有可以不用安装
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
获得连接连接mysql的包
wget http://downloads.sourceforge.net/project/mysql-python/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz
可以选择高版本1.2.3就不会遇到错误1和错误2
wget http://downloads.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

具体操作命令:
# tar zxvf setuptools-0.6c11.tar.gz
# cd setuptools-0.6c11
# python setup.py build
# python setup.py install

# tar zxvf MySQL-python-1.2.2.tar.gz
# cd MySQL-python-1.2.2
# python setup.py build
# python setup.py install

测试脚本
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os,sys
import  MySQLdb
try:
   db = MySQLdb.connect(host = 'localhost', user='root' passwd = 'xxxxx', db = 'mysql')
except MySQLdb.ERROR,e:
   print "Error %d:%s"%(e.args[0],e.args[1])
   exit(1)
cursor = db.cursor()
cursor.execute( 'select * from user')
result_set=cursor.fetchall()
print result_set
cursor.close()
db.close()
如果能查到结果,恭喜正确了。

错误1.
>>> import  MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-i686/egg/MySQLdb/__init__.py", line 19, in <module>
  File "build/bdist.linux-i686/egg/_mysql.py", line 7, in <module>
  File "build/bdist.linux-i686/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

解决方法
首先查找模块
# find / -name libmysqlclient_r.so.16
/usr/local/src/mysql-5.1.44-linux-i686-glibc23/lib/libmysqlclient_r.so.16
/usr/local/mysql/lib/libmysqlclient_r.so.16
将模块路径加入动态链接库设置为共享
 vim /etc/ld.so.conf
 加入:libmysqlclient_r.so.16所在目录
 ldconfig -v

错误2.
>>> import  MySQLdb
/usr/local/lib/python2.6/site-packages/MySQL_python-1.2.2-py2.6-linux-i686.egg/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated

解决方法
进入./MySQL-python-1.2.2/MySQLdb目录中
1) 在文件 "__init__" 中将:
 from sets import ImmutableSet
 class DBAPISet(ImmutableSet):
 替换为
 class DBAPISet(frozenset)
3) 在文件 "converters.py", 把 "Set" 改为 "set"
 将return set([ i for i in s.split(',') if i ])中"Set" 改为 "set"
 将set: Set2Str,中"Set" 改为 "set"
2) 在文件 "converters.py"中移除:
 from sets import BaseSet, Set
修改完毕后在做编译和安装。

错误3.
_mysql.c:36:23: 错误:my_config.h:没有那个文件或目录

解决方法
设置include 头文件路径即可,如下
export C_INCLUDE_PATH=/usr/local/mysql/include/

错误4.
>>> cur.execute('select * from user')
Segmentation fault

解决方法
将语句写为“select user,host from user”可以正常查出。
在64位的服务器上安装发现此问题。不知道为什么会有段错误。是否所有64位服务
器均有此问题,我没有测试

 

我要说明几点的是,我用的是suse x64服务器,安装成功,所以,解答了作者最后的一个疑问。而至于最前面的错误一,那个libmysqlclient_r.so.16,在我的suse x64服务器为libmysqlclient_r.so.18,并按照原文提供的方法添加就可以。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯