您的位置:首页 > 编程语言 > Python开发

Python 安装 MySQLdb

2013-04-28 23:24 134 查看
http://www.blogjava.net/huyi2006/articles/247966.html

http://eatsalt.blog.163.com/blog/static/87940266201102311504421/
http://hi.baidu.com/hevensun/item/51ee140eca4b3d26a0312d81 http://blog.csdn.net/showljj/article/details/8510871 http://scelong.iteye.com/blog/837055
MySQL 是十分流行的開源資料庫系統,很多網站也是使用 MySQL 作為後台資料儲存,而 Python 要連接 MySQL 可以使用 MySQL 模組。MySQLdb 模組可以讓 Python 程式連線到 MySQL server, 執行 SQL 語句及擷取資料等。

開始前要確定系統內的 Python 有安裝 MySQLdb 模式,你可以 Python command line interpreter 檢查,在指令模式輸入 python,然後便可以開始檢查:

Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named MySQLdb
>>> exit()

如果見以上面的 "ImportError: No module named MySQLdb" 一句,便表示系統沒有安裝,到 MySQLdb 官方網站 下載 MySQLdb,並用以下方法安裝:

http://nchc.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

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

shell中输入:
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build python setup.py install

还要安装 python-devel (yum install python-devel*)

代码:root@vpser:~# cd MySQL-python-1.2.3
root@vpser:~/MySQL-python-1.2.3# python setup.py install
sh: mysql_config: not found
Traceback (most recent call last):
File "setup.py", line 15, in <module>
metadata, options = get_config()
File "/root/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/root/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

首先查找mysql_config的位置,使用find / -name mysql_config ,比如我的在/usr/local/mysql/bin/mysql_config

修改setup_posix.py文件,在26行:
mysql_config.path = "mysql_config" 修改为:
mysql_config.path = "/usr/local/mysql/bin/mysql_config"

修改完成后保存,再执行
python setup.py build python setup.py install
python setup.py bdist_rpm

mysql_config not found

配置MySQL-Python的时候系统报错,提示:

EnvironmentError: mysql_config not found

Google后得知mysql_config是属于MySQL开发用的文件,而使用apt-get安装的MySQL是没有这个文件的,于是在包安装器里面寻找

libmysqld-dev

libmysqlclient-dev

这两个包安装后问题即可解决

or:

#apt-get -y install mysql-server mysql-client libmysqlclient-dev mytop

   今日,在安装Pylons时,前面的安装都非常的顺利,但是在安装MySQLdb工具时,在安装的时候就出现了一大陀错误,

Python代码  


mysql.c:2810: error: expected declaration specifiers before ‘init_mysql’

_mysql.c:2888: error: expected ‘{’ at end of input

error: <span style="color: #0000ff;">command 'gcc' failed with exit status 1</span>

在网上搜寻一番,和结合自己的实际情况,发现少安装了几个只要的软件包:
apt-get install python-dev
apt-get install libmysqlclient-dev
如此,安装就顺利完成了


Extract it and run:
python setup.py build
sudo python setup.py install

If you get this error you need to install python-dev package:
In file included from _mysql.c:29:
pymemcompat.h:10:20: error: Python.h: No such file or directory
_mysql.c:30:26: error: structmember.h: No such file or directory
In file included from /usr/include/mysql/mysql.h:44,
from _mysql.c:40:
.
.
.
_mysql.c:2808: warning: return type defaults to 'int'
_mysql.c: In function 'DL_EXPORT':
_mysql.c:2808: error: expected declaration specifiers before 'init_mysql'
_mysql.c:2886: error: expected '{' at end of input
error: command 'gcc' failed with exit status 1

Installing the python-dev package on Debian is done with apt-get or synaptic:
apt-get install python-dev

Installing the library should now work:
python setup.py build
python setup.py install

Next test the library in the python console:
import MySQLdb
# Note that this example uses UTF-8 encoding
conn = MySQLdb.connect(host='localhost', user='...', passwd='...', db='...', charset = "utf8", use_unicode = True)
cursor = conn.cursor()
cursor.execute ("SELECT * FROM cities")
rows = cursor.fetchall ()
for row in rows:
print "%s, %s" % (row[0], row[1].encode('utf-8'))
print "Number of rows returned: %d" % cursor.rowcount

Don’t forget to close the cursor and connection, and if you’re inserting data commit before closing, because autocommit is disabled by default:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: