當前位置:成語大全網 - 新華字典 - 問壹個python mysqldb提交問題。

問壹個python mysqldb提交問題。

任何應用都離不開數據,所以在學習python的時候,當然也要學習如何用python操作數據庫。Mysqldb是python操作MySQL數據庫的模塊。官方介紹:mysqldb是流行的MySQL數據庫服務器的線程兼容接口,提供Python數據庫API。實際上相當於翻譯c對應的接口。

使用這個數據庫接口主要是連接->數據庫;執行查詢->;提取數據->;關閉連接這些步驟。MySQLdb提供了關鍵對象,即連接、光標和結果。具體使用步驟很簡單。先不要寫。寫壹些我認為比較重要和值得註意的地方。

1.雖然我們在mysqldb中經常只使用這些參數。connect (host,user,passw,db)函數,裏面其實有很多重要的參數,比如字符集,線程安全,ssl等。使用時註意身份。

2.使用Connection.query()函數查詢後,Connection對象可以返回兩種結果,即store_result和use_result。store_result把結果集保存回客戶端,use_result把結果集保存在服務器端,維護壹個連接,會占用服務器資源。此時,無法進行其他查詢。除非返回的結果集太大或無法使用limit,否則建議使用Store_result。

3.取數據有三種返回形式。作為元組(how = 0);作為字典,key=column或table.column如果重復(how = 1);作為字典,key=table.column (how=2)

4.每次提取時,數據位置都會在結果中移動。也就是說,如果有10行數據,如果執行result.fetch_row(3,0),會得到前三行,然後執行result.fetch_row(3,0),會得到中間三行,所以fetch會導致位置的移動。還有壹點值得註意的是,如果使用use_result,即數據存儲在服務器中時,在fetch中的所有條目之前不能進行任何查詢操作。

5.mysql本身不支持遊標,但是MySQLdb模擬了遊標。執行查詢的重要方法是execute和executemany。Execute方法,執行壹條sql語句,調用executemany方法,非常好用。數據庫性能的瓶頸很大壹部分在於網絡IO和磁盤IO把多個insert放在壹起,只執行壹次IO,可以有效提升數據庫性能。遊標提取數據有三種方法:fetchone、fetchmany、fetchall,每種方法都會導致遊標漂移,所以壹定要註意遊標的位置。光標的scroll(value,mode)方法可以使光標滾動,mode參數指定是相對於當前位置移動還是絕對位置移動。

6.MySQLdb提供了很多函數和方法,官方指南中沒有完全列出。用戶可以用幫助看看,這提供了很多方便的東西。

7.對於mysql來說,如果使用支持事務的存儲引擎,那麽每次操作之後都需要提交,否則不會寫入數據庫,可以進行相應的回滾,但是提交之後是不可能回滾的。在執行很多sql指令後可以再次調用Commit(),這樣可以適當提高性能。

8.executemany處理太多命令不壹定好,因為當數據壹起傳輸到服務器時,可能會造成服務器端的緩沖區溢出,如果壹次數據量過大,也可能會造成壹些意想不到的麻煩。有道理,分批執行是個好主意。

最後,我自己寫了壹個pyMysql模塊,主要是把MySQLdb提供的常用方法簡單重新打包,也是借此機會學習MySQLdb,練習python編碼。這個程序使用的數據庫表使用的是myisam引擎,所以最好添加commit()來代替。