mamp python mysql_MAMP中Python安装MySQLdb
Python 標準數據庫接口為 Python DB-API,Python DB-API為開發人員提供了數據庫應用編程接口。
MySQLdb 是用于Python鏈接Mysql數據庫的接口,它實現了 Python 數據庫 API 規范 V2.0,基于 MySQL C API 上建立的。
一、如何安裝MySQLdb?
為了用DB-API編寫MySQL腳本,必須確保已經安裝了MySQL。復制以下代碼,并執行:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
如果執行后的輸出結果如下所示,意味著你沒有安裝 MySQLdb 模塊:
Traceback (most recent call last):
File "test.py", line 3, in
import MySQLdb
ImportError: No module named MySQLdb
如果您選擇二進制文件發行版本的話,安裝過程基本安裝提示即可完成。如果從源代碼進行安裝的話,則需要切換到MySQLdb發行版本的頂級目錄,并鍵入下列命令:
$ gunzip MySQL-python-1.2.2.tar.gz
$ tar -xvf MySQL-python-1.2.2.tar
$ cd MySQL-python-1.2.2
$ python setup.py build
$ python setup.py install
注意:請確保您有root權限來安裝上述模塊。
運行錯誤信息:
_mysql.c:44:10: fatal error: ‘my_config.h‘ file not found
原因是因為MySQL不是單獨安裝的,是安裝的一個MAMP集成開發環境包,在MAMP中PHP和MySQL的頭文件都是沒有的,所以會報出這個錯誤。我們有兩種解決方式,一種是重新編譯MySQL,一種是單獨安裝mysq-connector-c,因為開發環境包已經自帶了MySQL了,我們就不再編譯安裝了,單獨安裝就ok。
執行以下語句:
brew install mysql-connector-c
二、數據庫連接
出現以下錯誤提示:
sh: mysql_config: command not found
Traceback (most recent call last):
File "setup.py", line 17, in
metadata, options = get_config()
File "/Users/macbook/Downloads/MySQL-python-1.2.5/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/Users/macbook/Downloads/MySQL-python-1.2.5/setup_posix.py", line 25, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
修改setup_posix.py文件,代碼如下
mysql_config.path = "/Applications/MAMP/Library/bin/mysql_config"
如果不知道其目錄,可以使用一下命令查找
sudo find / -name mysql_config
完成該步驟之后可能仍然會出錯:
Traceback (most recent call last):
File "./hello.py", line 3, in
import MySQLdb
File "build/bdist.macosx-10.10-intel/egg/MySQLdb/__init__.py", line 19, in
File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 7, in
File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/macbook/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/macbook/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so
Reason: image not found
此時,需要執行命令
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
注意:該軟連接的實際目錄部分以自己機器上的目錄為準
另外:MAMP出現如下錯誤提示:
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
找不到socket文件,查找本機文件所在位置
sudo find / -name mysql.sock
將文件地址作為參數傳遞到數據庫連接語句
con=MySQLdb.connect(host=‘localhost‘,user=‘root‘,passwd=‘root‘,db=‘StudentDB‘,port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset=‘utf8‘)
三、實例:
以下實例鏈接Mysql的StudentDB數據庫:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
import sys
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
con=MySQLdb.connect(host=‘localhost‘,user=‘root‘,passwd=‘root‘,db=‘StudentDB‘,port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset=‘utf8‘)
#獲取 mysql 的鏈接對象
with con:
#獲取執行查詢的對象
cur = con.cursor()
#執行那個查詢,這里用的是 select 語句
cur.execute("SELECT * FROM Student")
#使用 cur.rowcount 獲取結果集的條數
numrows = int(cur.rowcount)
#循環 numrows 次,每次取出一行數據
for i in range(numrows):
#每次取出一行,放到 row 中,這是一個元組(id,name)
row = cur.fetchone()
#直接輸出兩個元素
print row[0], row[1]
總結
以上是生活随笔為你收集整理的mamp python mysql_MAMP中Python安装MySQLdb的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序库文件,c语言标准函数库
- 下一篇: python 自动删除文件_python