二,、MySQLdb的使用,。
引入我們需要的包 import MySQLdb 1.和數(shù)據(jù)庫(kù)建立連接 conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable") 提供的connect方法用來(lái)和數(shù)據(jù)庫(kù)建立連接,接收數(shù)個(gè)參數(shù),返回連接對(duì)象. 比較常用的參數(shù)包括 host:數(shù)據(jù)庫(kù)主機(jī)名.默認(rèn)是用本地主機(jī). user:數(shù)據(jù)庫(kù)登陸名.默認(rèn)是當(dāng)前用戶. passwd:數(shù)據(jù)庫(kù)登陸的秘密.默認(rèn)為空. db:要使用的數(shù)據(jù)庫(kù)名.沒(méi)有默認(rèn)值. port:MySQL服務(wù)使用的TCP端口.默認(rèn)是3306. conn連接有兩個(gè)重要的方法commit【提交新增和修改】,rollback【撤銷(xiāo)新增或修改】 2.執(zhí)行SQL語(yǔ)句獲取返回值 //獲取連接的游標(biāo) cursor=conn.cursor() //查詢 sql = "select * from 【table】" //新增 sql = "insert into 【table】(字段,字段) values(值,值)" //修改 sql = "update 【table】 set 字段 =‘值’where 條件 " //刪除 sql = "delete from 【table】 where 條件" cursor.execute(sql) 返回值 cur.execute('select * from tables') 其返回值為SQL語(yǔ)句得到的行數(shù),,如:2L,,表示2行。 然后,,可以從該對(duì)象的fetchone或fetchall方法得到行信息,。 獲取行信息 指針對(duì)象的fetchone()方法,是每次得到一行的tuple返回值: 引用 >>> row=cur.fetchone() >>> print row ('user1', '52c69e3a57331081823331c4e69d3f2e', 1000L, 1000L, '/home/FTP/user1', '') 指針對(duì)象的fetchall()方法,,是得到一組tuple,,其內(nèi)容為由行信息組成的tuple值: 引用 >>> cur.scroll(0,'absolute') >>> row=cur.fetchall() >>> print row (('user1', '52c69e3a57331081823331c4e69d3f2e', 1000L, 1000L, '/home/FTP/user1', ''), ('user2', '7e58d63b60197ceb55a1c487989a3720', 1000L, 1000L, '/home/FTP/user2', None)) 移動(dòng)指針 當(dāng)使用fetchone()方法是,,指針是會(huì)發(fā)生移動(dòng)的。所以,,若不重置指針,,那么使用fetchall的信息將只會(huì)包含指針后面的行內(nèi)容。 手動(dòng)移動(dòng)指針使用: cur.scroll(int,parm) 含義為: 引用 int:移動(dòng)的行數(shù),,整數(shù),;在相對(duì)模式下,正數(shù)向下移動(dòng),,負(fù)值表示向上移動(dòng),。 parm:移動(dòng)的模式,默認(rèn)是relative,,相對(duì)模式,;可接受absoulte,絕對(duì)模式,。 修改數(shù)據(jù) 修改數(shù)據(jù),,包括插入、更新,、刪除,。它們都是使用指針對(duì)象的execute()方法執(zhí)行: cur.execute("insert into table (row1, row2) values ('111', '222')") cur.execute("update table set row1 = 'test' where row2 = 'row2' ") cur.execute("delete from table where row1 = 'row1' ") 因單引號(hào)“'”用于SQL語(yǔ)句中的標(biāo)識(shí),所以,,python中的字符串需使用雙引號(hào)括住,。 此外,也可以使用python的“格式化字符串”寫(xiě)法,,簡(jiǎn)化命令,,例如: cur.execute("update table set row1 = '%s' where row2 = '%s' " %('value1','value2')) ※請(qǐng)注意,'%s'的單引號(hào)是SQL語(yǔ)句的間隔符,,'value1'的單引號(hào)是python的字符串間隔符,,其含義是不同的。是否需要間隔符,,以及使用雙引號(hào)還是單引號(hào)作為間隔,,需根據(jù)其含義決定。例如,,還有: cur.execute("update FTPUSERS set passwd=%s where userid='%s' " %("md5('123')",'user2')) 這里,,paswd=%s是因SQL的md5()函數(shù)是不需要單引號(hào)間隔的;"md5('123')"是python的字符串中含有單引號(hào),,所以用雙引號(hào)括住,。 提交修改 一般情況下,MySQLdb模塊會(huì)自動(dòng)提交修改,。但我們?cè)诟聰?shù)據(jù)后,,手動(dòng)運(yùn)行一次: conn.commit() 關(guān)閉數(shù)據(jù)庫(kù)連接 需要分別的關(guān)閉指針對(duì)象和連接對(duì)象.他們有名字相同的方法 cursor.close() conn.close() 參考鏈接: http://www.cnblogs.com/sislcb/archive/2008/11/24/1339913.html http://www./post/180/ http://www./4/viewspace-16757.html |
|