標籤:python mysql
首先需要安裝zlib、zlib-devl、python和python-devel。
yum install zlib zlib-devel
安裝使用包
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 = ‘root‘, 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 "", line 1, in
File "build/bdist.linux-i686/egg/MySQLdb/__init__.py", line 19, in
File "build/bdist.linux-i686/egg/_mysql.py", line 7, in
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位服務
器均有此問題,我沒有測試
本文出自 “7727197” 部落格,請務必保留此出處http://7737197.blog.51cto.com/7727197/1663093
python操作mysql