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
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
参考链接
[1] http://bbs.chinaunix.net/thread-3574499-1-1.html
[2]http://cooler1217.iteye.com/blog/1497472
[3]http://www.phpv5.com/blog/mysqlpython-setup-error
[4]http://www.cnblogs.com/czh-liyu/archive/2008/04/13/1151758.html