久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python操作mysql數(shù)據(jù)庫(kù):MySQLdb模塊

 蘇格拉米 2015-01-06

 Python中的mysql操作可以使用MySQLdb模塊來(lái)完成,。它符合Python社區(qū)設(shè)計(jì)的Python Database API SpecificationV2.0標(biāo)準(zhǔn),,所以與其他的數(shù)據(jù)庫(kù)操作的API,如SQLite等基本類似,。


1.連接的建立與釋放
建立連接時(shí)可用connect函數(shù),它返回一個(gè)Connection類型對(duì)象

conn = MySQLdb.connect('localhost', 'root', '123456', 'test')

connect方法常用的參數(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.
charset:數(shù)據(jù)庫(kù)編碼,。

如果在數(shù)據(jù)編碼設(shè)置正確時(shí),向數(shù)據(jù)庫(kù)插入數(shù)據(jù)出現(xiàn)亂碼時(shí),,可以設(shè)置連接的字符集參數(shù)charset,。

釋放連接時(shí)可以應(yīng)用Connection類型對(duì)象的close方法。
conn.close()

2.Cursor對(duì)象
執(zhí)行SQL語(yǔ)句前要獲得一個(gè)指定連接的Cursor對(duì)象,,由Cursor對(duì)象執(zhí)行SQL查詢并獲取結(jié)果,。

獲得Cursor對(duì)象的方法
cur = conn.cursor()

在默認(rèn)情況下cursor方法返回的是BaseCursor類型對(duì)象,BaseCursor類型對(duì)象在執(zhí)行查詢后每條記錄的結(jié)果以列表(list)表示,。如果要返回字典(dict)表示的記錄,,就要設(shè)置cursorclass參數(shù)為MySQLdb.cursors.DictCursor類。
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
這個(gè)參數(shù)也可在調(diào)用connect方法建立連接時(shí)設(shè)置
conn = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test' cursorclass = MySQLdb.cursors.DictCursor)

執(zhí)行結(jié)束后可以關(guān)閉cursor對(duì)象
cur.close()

3.查詢,,插入,,更新、刪除操作,。

Cursor類型提供了execute方法用于執(zhí)行SQL操作
execute(query [,parameters])
query是一個(gè)SQL字符串,,parameters是一個(gè)序列或映射,返回值是所影響的記錄數(shù)

查詢
cur.execute("select * from t1 where name = %s and age = %s", ('June', 27))
cur.execute("select * from t1 where name = %(name)s and age = %(age)s", {'name':'June', 'age':27})
這里和字符串的格式化操作類似,,但不管參數(shù)是什么類型,,都要用'%s'

獲取結(jié)果
獲取結(jié)果集有三種方法,fetchone,、fetchall和fetchmany,,返回結(jié)果是一個(gè)tuple對(duì)象,tuple中的每一個(gè)元素對(duì)應(yīng)查詢結(jié)果中的一條記錄,。
fetchone()返回結(jié)果集中的下一條記錄
fetchall()返回結(jié)果集中的剩余記錄
fetchmany([size])返回結(jié)果集中size條記錄

插入,、更新、刪除
cur.execute("insert t1(name, age) values(%s, %s)", ('Jack', 32))
更新和刪除的操作與更新,、刪除類似

除了execute,,Cursor類還提供了executemany()方法
executemany(query [, parametersequence])
querey是一個(gè)查詢字符串,,parametersequence是一個(gè)參數(shù)序列。這一序列的每一項(xiàng)都是一個(gè)序列或映射對(duì)象,。但executemany只適合插入,、更新或刪除操作,而不適用于查詢操作,。

cur.execute("insert t1(name, age) values(%s, %s)", (('Jack', 32), ('Junior', 24)))

mysql現(xiàn)在一般會(huì)默認(rèn)InnoDB作為默認(rèn)引擎,,InnoDB引擎執(zhí)行插入、更新,、刪除操作后要進(jìn)行提交,,才會(huì)更新數(shù)據(jù)庫(kù)。
cur.commit()

4.其他操作
Connection類:
rollback() 回滾

Cursor類:
callproc(procname, args):用來(lái)執(zhí)行存儲(chǔ)過(guò)程,接收的參數(shù)為存儲(chǔ)過(guò)程名和參數(shù)列表,返回值為受影響的行數(shù),。
nextset():移動(dòng)到下一個(gè)結(jié)果集
執(zhí)行查詢操作或存儲(chǔ)過(guò)程時(shí)可能返回多個(gè)結(jié)果集,,例如:
cur.execute('select * from t1; select * from t2')

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多