安裝好之後,模組名字叫做MySQLdb ,在Window和Linux環境下都可以使用,實驗了一下挺好用, 不過又發現了煩人的亂麻問題,最後用了幾個辦法,解決了! 我用了下面幾個措施,保證MySQL的輸出沒有亂麻: 1 Python檔案設定編碼 utf-8 (檔案前面加上 #encoding=utf-8)
2 MySQL資料庫charset=utf-8
3 Python串連MySQL是加上參數 charset=utf8
4 設定Python的預設編碼為 utf-8 (sys.setdefaultencoding(utf-8) mysql_test.py # encoding=utf-8
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding( ' utf-8 ' )
db = MySQLdb.connect(user = ' root ' ,charset = ' utf8 ' )
cur = db.cursor()
cur.execute( ' use mydb ' )
cur.execute( ' select * from mytb limit 100 ' )
f = file( " /home/user/work/tem.txt " , ' w ' )
for i in cur.fetchall():
f.write(str(i))
f.write( " " )
f.close()
cur.close()上面是linux上的指令碼,windows下運行正常! 註:MySQL的設定檔設定也必須配置成utf8
設定 MySQL 的 my.cnf 檔案,在 [client]/[mysqld]部分都設定預設的字元集(通常在/etc/mysql/my.cnf): [client] default-character-set = utf8 [mysqld] default-character-set = utf8 ---------------------------------------------
#!/usr/bin/env python # -*-coding:UTF-8-*-#這一句告訴python用UTF-8編碼 #========================================================================= # # NAME: Python MySQL test # # AUTHOR: benyur # DATE : 2004-12-28 # # COMMENT: 這是一個python串連mysql的例子 # #========================================================================= """ ***** This is a MySQL test ***** select: conn=Connection() conn.select_db('test') cur=conn.cursor() cur.execute('select * from user') cur.scroll(0) row1=cur.fetchone() row1[0] row1[1] row1[2] insert: cur.execute('insert into user (name,passwd) values(/'benyur/',/'12345/')') cur.insert_id() update: cur.execute('update user set passwd=/'123456/' where name=/'benyur/'') delete: cur.execute('delete from user where id=2') ********************************** """ from MySQLdb import * def conn(): conn=Connection() conn.select_db('test') cur=conn.cursor() cur.execute('select * from user') cur.scroll(0) row1=cur.fetchone() row1[0] row1[1] row1[2] def usage(): print __doc__ if __name__=='__main__': usage() MySQLdb:http://sourceforge.net/projects/mysql-python/
下載解壓縮後放到%Python_HOME%/Lib/site-packages目錄中,python會自動找到此包。 MySQLdb基本上是MySQL C API的Python版,遵循Python Database API Specification v2.0。 其他: 1. 平台及版本 linux 核心2.6,gcc 3.4.4,glibc 2.4 python 2.4.3 mysql 5.0.19 mysql-python 1.2.1-p2 2. 安裝mysql-python tar xvfz MySQL-python-1.2.1_p2.tar.gz cd MySQL-python-1.2.1_p2 python setup.py build python setup.py install
3. 使用 import MySQLdb 3.1. 串連 conn = MySQLdb.Connection(host, user, password, dbname) 3.2. 選擇資料庫 conn.select_db(’database name’) 3.3. 獲得cursor cur = conn.cursor() 3.4. cursor位置設定 cur.scroll(int, mode) mode可為相對位置或者絕對位置,分別為relative和absolute。 3.5. select cur.execute(‘select clause’) 例如 cur.execute(‘select * from mytable’) row = cur.fetchall() 或者: row1 = cur.fetchone() 3.6. insert cur.execute(‘inset clause’) 例如 cur.execute(‘insert into table (row1, row2) values (/’111/’, /’222/’)’) conn.commit() 3.7. update cur.execute(‘update clause’) 例如 cur.execute(“update table set row1 = ‘’ where row2 = ‘row2 ‘ ”) conn.commit() 3.8. delete cur.execute(‘delete clause’) 例如 cur.execute(“delete from table where row1 = ‘row1’ ”) conn.commit() |