python_MySQL 數據庫操做

Python中的mysql操做能夠使用 MySQLdb模塊來完成。它符合Python社區設計的 Python Database API SpecificationV2.0標準,因此與其餘的數據庫操做的API,如SQLite等基本相似。
學習可參見:http://www.runoob.com/python3/python3-mysql.html
 
1.鏈接的創建與釋放
創建鏈接時可用connect函數,它返回一個Connection類型對象
 
conn = MySQLdb. connect( 'localhost''root''123456''test')
 
connect方法經常使用的參數有
 
host:數據庫主機名.默認是用本地主機. 
user:數據庫登錄名.默認是當前用戶. 
passwd:數據庫登錄的祕密.默認爲空. 
db:要使用的數據庫名.沒有默認值. 
port:MySQL服務使用的TCP端口.默認是3306.
charset:數據庫編碼。
 
若是在數據編碼設置正確時,向數據庫插入數據出現亂碼時,能夠設置鏈接的字符集參數 charset
 
釋放鏈接時能夠應用Connection類型對象的close方法。
conn. close()
 
2.Cursor對象
執行SQL語句前要得到一個指定鏈接的Cursor對象,由Cursor對象執行SQL查詢並獲取結果。
 
得到Cursor對象的方法
cur = conn. cursor()
 
在默認狀況下cursor方法返回的是BaseCursor類型對象,BaseCursor類型對象在執行查詢後每條記錄的結果以列表(list)表示。若是要返回字典(dict)表示的記錄,就要設置cursorclass參數爲MySQLdb.cursors.DictCursor類。
cur = conn. cursor(cursorclass=MySQLdb.cursors.DictCursor)
這個參數也可在調用connect方法創建鏈接時設置
conn  =  MySQLdb. connect(host  =  'localhost',  user  =  'root',  passwd  =  '123456',  db  =  'test'  cursorclass  =  MySQLdb.cursors.DictCursor)
 
執行結束後能夠關閉cursor對象
cur. close()
 
3.查詢,插入,更新、刪除操做。
 
Cursor類型提供了execute方法用於執行SQL操做
execute ( query  [,parameters])
query是一個SQL字符串,parameters是一個序列或映射,返回值是所影響的記錄數
 
查詢
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})
這裏和字符串的格式化操做相似,但無論參數是什麼類型,都要用'%s'
 
獲取結果
獲取結果集有三種方法,fetchone、fetchall和fetchmany,返回結果是一個tuple對象,tuple中的每個元素對應查詢結果中的一條記錄。
fetchone ()返回結果集中的下一條記錄
fetchall ()返回結果集中的剩餘記錄
fetchmany ([size])返回結果集中size條記錄
 
插入、更新、刪除
cur. execute( "insert t1(name, age) values(%s, %s)", ( 'Jack', 32))
更新和刪除的操做與更新、刪除相似
 
除了execute,Cursor類還提供了executemany()方法
executemany ( query  [, parametersequence])
querey是一個查詢字符串,parametersequence是一個參數序列。這一序列的每一項都是一個序列或映射對象。但executemany只適合插入、更新或刪除操做,而不適用於查詢操做。
 
cur. execute( "insert t1(name, age) values(%s, %s)", (( 'Jack', 32), ( 'Junior', 24)))
 
mysql如今通常會默認InnoDB做爲默認引擎,InnoDB引擎執行插入、更新、刪除操做後要進行提交,纔會更新數據庫。
cur. commit()
 
4.其餘操做
Connection類:
rollback () 回滾
 
Cursor類:
callproc ( procname ,  args ):用來執行存儲過程,接收的參數爲存儲過程名和參數列表,返回值爲受影響的行數。
nextset ():移動到下一個結果集
執行查詢操做或存儲過程時可能返回多個結果集,例如:
cur. execute( 'select * from t1; select * from t2')
相關文章
相關標籤/搜索