1、匯入模組import MySQLdb
>>> help ('MySQLdb')
>>> help ('MySQLdb.cursors')
2、串連資料庫conn = MySQLdb.Connection(host='host',user= 'user',passwd= 'password',db = 'dbname',port=port)
例如:
conn = connect(host='10.0.*.*',user='root',db='mysql',port=3306,passwd='test')
含義是:host:需要串連Mysql的主機ip
user:串連mysql使用的使用者名稱
password:串連使用的使用者名稱密碼
dbname:預設開啟的資料庫
串連成功後,如需切換該使用者的其他資料庫,使用以下語句:conn.select_db('database name')
3、擷取資料庫操作遊標(指標)
因該模組底層其實是調用C API的,所以,需要先得到當前指向資料庫的指標cur = conn.cursor()
4、對資料庫的相關操作
先使用指標對象執行SQL查詢語句:cur.execute('select * from tables')
其傳回值為SQL語句得到的行數,如:2L,表示2行。
然後,可以從該對象的fetchone或fetchall方法得到行資訊。
指標對象的fetchone()方法,是每次得到一行的tuple傳回值:
>>> result=cur.fetchone()>>> print result
指標對象的fetchall()方法,是得到一組tuple,其內容為由行資訊組成的tuple值:
>>> cur.scroll(0,'absolute')>>> result=cur.fetchall()>>> print result
另外還有fetchmany()方法,用法相似
使用fetchone()方法時,指標是會發生移動的。所以,若不重設指標,那麼使用fetchall的資訊將只會包含指標後面的行內容。
手動移動指標使用:cur.scroll(int,parm)
這裡參數含義為:int:移動的行數,整數;在相對模式下,正數向下移動,負值表示向上移動。
parm:移動的模式,預設是relative,相對模式;可接受absoulte,絕對模式。
插入、更新、刪除語句,都是使用指標對象的execute()方法執行:cur.execute("insert into table (row1, row2) values ('val1', 'val2')")
cur.execute("update table set row1 = 'test' where row2 = 'row2' ")
cur.execute("delete from table where row1 = 'row1' ")
因單引號“'”用於SQL語句中的標識,所以,python中的字串需使用雙引號括住。
此外,也可以使用python的“格式化字串”寫法,簡化命令,例如:
cur.execute("update table set row1 = '%s' where row2 = '%s' " %('value1','value2'))
'%s'的單引號是SQL語句的間隔符,'value1'的單引號是python的字串間隔符,其含義是不同的。是否需要間隔符,以及使用雙引號還是單引號作為間隔,需根據其含義決定。例如,還有:
cur.execute("update FTPUSERS set passwd=%s where userid='%s' " %("md5('123')",'user2'))
這裡,paswd=%s是因SQL的md5()函數是不需要單引號間隔的;"md5('123')"是python的字串中含有單引號,所以用雙引號括住。
一般情況下,MySQLdb模組會自動認可修改。為確保起見,最好手動運行一次,尤其是使用update時conn.commit()