Python中MySQLdb模块的安装_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2390 | 回复: 0   主题: Python中MySQLdb模块的安装        下一篇 
    本主题由 koei123 于 2015-6-1 15:03:31 移动
flying
注册用户
等级:下士
经验:153
发帖:75
精华:0
注册:2011-8-25
状态:离线
发送短消息息给flying 加好友    发送短消息息给flying 发消息
发表于: IP:您无权察看 2015-4-22 10:14:51 | [全部帖] [楼主帖] 楼主

MySQLdb是Python语言访问mysql数据库的一个模块,如果你不确定自己的Python环境中是否已经安装了这个模块,可以打开Python shell,输入import MySQLdb,如果是返回错误,那就表明没有安装这个Python模块。下面就是在centos安装它的流程以及在安装过程中遇到的一些问题:

首先,在http://sourceforge.net/projects/mysql-python/ 这个网站上,我们可以下到这个类库,然后解压这个文件

tar xfz MySQL-python-1.2.4b4.tar.gz
cd MySQL-python-1.2.4b4


在site.cfg文件中,我们需要做一下简单的配置

mysql_config = /usr/bin/mysql_config


最后就是

python setup.py build
python setup.py install


安装中遇到的问题
第一点
_mysql.c:740: 警告:隐式声明函数 ‘mysql_debug’

_mysql.c: In function ‘_mysql_ConnectionObject_dump_debug_info’:


_mysql.c:758: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:760: 警告:隐式声明函数 ‘mysql_dump_debug_info’
_mysql.c:760: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_autocommit’:


_mysql.c:784: 警告:隐式声明函数 ‘mysql_query’
_mysql.c:784: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_commit’:


_mysql.c:807: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_rollback’:


_mysql.c:829: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_errno’:


_mysql.c:941: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:942: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_error’:


_mysql.c:957: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:958: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:958: 警告:传递参数 1 (属于 ‘PyString_FromString’)时将整数赋给指针,未作类型转换

_mysql.c: In function ‘_mysql_escape_string’:


_mysql.c:982: 警告:隐式声明函数 ‘mysql_escape_string’

_mysql.c: In function ‘_mysql_escape’:


_mysql.c:1089: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘converter’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_describe’:


_mysql.c:1169: 错误:‘MYSQL_FIELD’ 未声明 (在此函数内第一次使用)
_mysql.c:1169: 错误:‘fields’ 未声明 (在此函数内第一次使用)
_mysql.c:1172: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1173: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1174: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1185: 警告:隐式声明函数 ‘IS_NOT_NULL’

_mysql.c: In function ‘_mysql_ResultObject_field_flags’:


_mysql.c:1205: 错误:‘MYSQL_FIELD’ 未声明 (在此函数内第一次使用)
_mysql.c:1205: 错误:‘fields’ 未声明 (在此函数内第一次使用)
_mysql.c:1208: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1209: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1210: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c: 在顶层:
_mysql.c:1251: 错误:expected declaration specifiers or ‘...’ before ‘MYSQL_ROW’

_mysql.c: In function ‘_mysql_row_to_tuple’:


_mysql.c:1257: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1259: 警告:隐式声明函数 ‘mysql_fetch_lengths’
_mysql.c:1259: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1259: 警告:赋值时将整数赋给指针,未作类型转换
_mysql.c:1262: 错误:‘_mysql_ResultObject’ 没有名为 ‘converter’ 的成员
_mysql.c:1263: 错误:‘row’ 未声明 (在此函数内第一次使用)
_mysql.c: 在顶层:
_mysql.c:1276: 错误:expected declaration specifiers or ‘...’ before ‘MYSQL_ROW’

_mysql.c: In function ‘_mysql_row_to_dict’:


_mysql.c:1281: 错误:‘MYSQL_FIELD’ 未声明 (在此函数内第一次使用)
_mysql.c:1281: 错误:‘fields’ 未声明 (在此函数内第一次使用)
_mysql.c:1283: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1285: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1285: 警告:赋值时将整数赋给指针,未作类型转换
_mysql.c:1286: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1289: 错误:‘_mysql_ResultObject’ 没有名为 ‘converter’ 的成员
_mysql.c:1290: 错误:‘row’ 未声明 (在此函数内第一次使用)
_mysql.c: 在顶层:
_mysql.c:1315: 错误:expected declaration specifiers or ‘...’ before ‘MYSQL_ROW’

_mysql.c: In function ‘_mysql_row_to_dict_old’:


_mysql.c:1320: 错误:‘MYSQL_FIELD’ 未声明 (在此函数内第一次使用)
_mysql.c:1320: 错误:‘fields’ 未声明 (在此函数内第一次使用)
_mysql.c:1322: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1324: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1324: 警告:赋值时将整数赋给指针,未作类型转换
_mysql.c:1325: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1328: 错误:‘_mysql_ResultObject’ 没有名为 ‘converter’ 的成员
_mysql.c:1329: 错误:‘row’ 未声明 (在此函数内第一次使用)
_mysql.c: 在顶层:
_mysql.c:1351: 错误:expected declaration specifiers or ‘...’ before ‘MYSQL_ROW’

_mysql.c: In function ‘_mysql__fetch_row’:


_mysql.c:1362: 错误:‘MYSQL_ROW’ 未声明 (在此函数内第一次使用)
_mysql.c:1362: 错误:expected ‘;’ before ‘row’
_mysql.c:1366: 错误:‘_mysql_ResultObject’ 没有名为 ‘use’ 的成员
_mysql.c:1367: 错误:‘row’ 未声明 (在此函数内第一次使用)
_mysql.c:1367: 警告:隐式声明函数 ‘mysql_fetch_row’
_mysql.c:1367: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1370: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:1373: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:1381: 错误:提供给函数 ‘convert_row’ 的实参太多

_mysql.c: In function ‘_mysql_ResultObject_fetch_row’:


_mysql.c:1405: 错误:expected declaration specifiers or ‘...’ before ‘MYSQL_ROW’
_mysql.c:1420: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1432: 错误:‘_mysql_ResultObject’ 没有名为 ‘use’ 的成员
_mysql.c:1446: 警告:隐式声明函数 ‘mysql_num_rows’
_mysql.c:1446: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_character_set_name’:


_mysql.c:1513: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员

_mysql.c: In function ‘_mysql_get_client_info’:


_mysql.c:1604: 警告:隐式声明函数 ‘mysql_get_client_info’
_mysql.c:1604: 警告:传递参数 1 (属于 ‘PyString_FromString’)时将整数赋给指针,未作类型转换

_mysql.c: In function ‘_mysql_ConnectionObject_get_host_info’:


_mysql.c:1618: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1619: 警告:隐式声明函数 ‘mysql_get_host_info’
_mysql.c:1619: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:1619: 警告:传递参数 1 (属于 ‘PyString_FromString’)时将整数赋给指针,未作类型转换

_mysql.c: In function ‘_mysql_ConnectionObject_get_proto_info’:


_mysql.c:1633: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1634: 警告:隐式声明函数 ‘mysql_get_proto_info’
_mysql.c:1634: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_get_server_info’:


_mysql.c:1648: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1649: 警告:隐式声明函数 ‘mysql_get_server_info’
_mysql.c:1649: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:1649: 警告:传递参数 1 (属于 ‘PyString_FromString’)时将整数赋给指针,未作类型转换

_mysql.c: In function ‘_mysql_ConnectionObject_info’:


_mysql.c:1665: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1666: 警告:隐式声明函数 ‘mysql_info’
_mysql.c:1666: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:1666: 警告:赋值时将整数赋给指针,未作类型转换

_mysql.c: In function ‘_mysql_ConnectionObject_insert_id’:


_mysql.c:1698: 错误:‘my_ulonglong’ 未声明 (在此函数内第一次使用)
_mysql.c:1698: 错误:expected ‘;’ before ‘r’
_mysql.c:1700: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1702: 错误:‘r’ 未声明 (在此函数内第一次使用)
_mysql.c:1702: 警告:隐式声明函数 ‘mysql_insert_id’
_mysql.c:1702: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_kill’:


_mysql.c:1719: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1721: 警告:隐式声明函数 ‘mysql_kill’
_mysql.c:1721: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_field_count’:


_mysql.c:1740: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1742: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_num_fields’:


_mysql.c:1757: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1758: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_num_rows’:


_mysql.c:1773: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1774: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_ping’:


_mysql.c:1803: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1804: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:1806: 警告:隐式声明函数 ‘mysql_ping’
_mysql.c:1806: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_query’:


_mysql.c:1827: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1829: 警告:隐式声明函数 ‘mysql_real_query’
_mysql.c:1829: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_select_db’:


_mysql.c:1857: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1859: 警告:隐式声明函数 ‘mysql_select_db’
_mysql.c:1859: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_shutdown’:


_mysql.c:1878: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1880: 警告:隐式声明函数 ‘mysql_shutdown’
_mysql.c:1880: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_stat’:


_mysql.c:1905: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1907: 警告:隐式声明函数 ‘mysql_stat’
_mysql.c:1907: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:1907: 警告:赋值时将整数赋给指针,未作类型转换

_mysql.c: In function ‘_mysql_ConnectionObject_store_result’:


_mysql.c:1928: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1929: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘converter’ 的成员
_mysql.c:1938: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_thread_id’:


_mysql.c:1967: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1969: 警告:隐式声明函数 ‘mysql_thread_id’
_mysql.c:1969: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_use_result’:


_mysql.c:1989: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:1990: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘converter’ 的成员
_mysql.c:1999: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_dealloc’:


_mysql.c:2017: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员

_mysql.c: In function ‘_mysql_ConnectionObject_repr’:


_mysql.c:2029: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:2030: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_data_seek’:


_mysql.c:2048: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:2049: 警告:隐式声明函数 ‘mysql_data_seek’
_mysql.c:2049: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_row_seek’:


_mysql.c:2062: 错误:‘MYSQL_ROW_OFFSET’ 未声明 (在此函数内第一次使用)
_mysql.c:2062: 错误:expected ‘;’ before ‘r’
_mysql.c:2064: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:2065: 错误:‘_mysql_ResultObject’ 没有名为 ‘use’ 的成员
_mysql.c:2070: 错误:‘r’ 未声明 (在此函数内第一次使用)
_mysql.c:2070: 警告:隐式声明函数 ‘mysql_row_tell’
_mysql.c:2070: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:2071: 警告:隐式声明函数 ‘mysql_row_seek’
_mysql.c:2071: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_row_tell’:


_mysql.c:2083: 错误:‘MYSQL_ROW_OFFSET’ 未声明 (在此函数内第一次使用)
_mysql.c:2083: 错误:expected ‘;’ before ‘r’
_mysql.c:2085: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:2086: 错误:‘_mysql_ResultObject’ 没有名为 ‘use’ 的成员
_mysql.c:2091: 错误:‘r’ 未声明 (在此函数内第一次使用)
_mysql.c:2091: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c:2092: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员

_mysql.c: In function ‘_mysql_ResultObject_dealloc’:


_mysql.c:2100: 警告:隐式声明函数 ‘mysql_free_result’
_mysql.c:2100: 错误:‘_mysql_ResultObject’ 没有名为 ‘result’ 的成员
_mysql.c: 在顶层:
_mysql.c:2331: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员
_mysql.c:2338: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘converter’ 的成员
_mysql.c:2345: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:2352: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:2359: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘connection’ 的成员
_mysql.c:2422: 错误:‘_mysql_ResultObject’ 没有名为 ‘converter’ 的成员
_mysql.c:2422: 错误:初始值设定元素不是常量
_mysql.c:2422: 错误:(在 ‘_mysql_ResultObject_memberlist[0].offset’ 的初始化附近)

_mysql.c: In function ‘_mysql_ConnectionObject_getattr’:


_mysql.c:2444: 错误:‘_mysql_ConnectionObject’ 没有名为 ‘open’ 的成员

error: command 'gcc' failed with exit status 1


解决办法就是安装mysql-devel依赖包:

yum install mysql-devel


第二点

running build
running build_py
copying MySQLdb/release.py -> build/lib.linux-i686-2.4/MySQLdb
running build_ext
building '_mysql' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-siz e=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1. 2.4b4 -I/usr/local/mysql/include/mysql -I/usr/include/python2.4 -c _mysql.c -o build/temp.linux-i686-2.4/_mysql.o -g -DUNIV_LINUX
_mysql.c: In function ‘_mysql_ConnectionObject_Initialize’:
_mysql.c:602: error: expected expression before ‘)’ token
error: command 'gcc' failed with exit status 1


这里是源码有些问题:在_mysql.c 602行附近,找到下边的代码:

if (!PyArg_ParseTupleAndKeywords(args, kwargs,
#ifdef HAVE_MYSQL_OPT_READ_TIMEOUT
"|ssssisOiiisssiOii:connect",
#else
"|ssssisOiiisssiOi:connect",
#endif
kwlist,
&host, &user, &passwd, &db,
&port, &unix_socket, &conv,
&connect_timeout,
&compress, &named_pipe,
&init_command, &read_default_file,
&read_default_group,
&client_flag, &ssl,
&local_infile,
#ifdef HAVE_MYSQL_OPT_READ_TIMEOUT
&read_timeout
#endif
))
return -1;

改为

if (!PyArg_ParseTupleAndKeywords(args, kwargs,
#ifdef HAVE_MYSQL_OPT_READ_TIMEOUT
"|ssssisOiiisssiOii:connect",
#else
"|ssssisOiiisssiOi:connect",
#endif
kwlist,
&host, &user, &passwd, &db,
&port, &unix_socket, &conv,
&connect_timeout,
&compress, &named_pipe,
&init_command, &read_default_file,
&read_default_group,
&client_flag, &ssl,
&local_infile
#ifdef HAVE_MYSQL_OPT_READ_TIMEOUT
, &read_timeout
#endif
))
return -1;

然后再执行

python setup.py build
python setup.py install


如果还是有问题,可以参考install文件,里面有在安装MySQLdb时一些需要注意的事项。

--转自 北京联动北方科技有限公司

该贴由koei123转至本版2015-6-1 15:03:31



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论