在python2中mysql的模塊是mysqldb,python2則開始使用pymysql。python
https://www.python.org/dev/peps/pep-0249/ 爲python db API的官方文檔。mysql
建立一個鏈接數據庫的構造函數,返回一個鏈接對象,須要一些數據庫方面的參數(host,user,passwd,db)。sql
鏈接對象會返回一些方法數據庫
.close()編程
立刻關閉鏈接。從這個時間點開始,鏈接不可用,若是還有對鏈接的操做,則會出現error異常。若是修改數據後沒有commit後直接close,則修改無效。app
.commit()函數
向db提交pending狀態的修改操做。若是db支持auto-commit特性,則一開始就要關閉commit,但能夠經過接口來打開它。性能
.rollback()fetch
這個方法會使db回滾到全部pending操做的開始。對象
.cursor()
使用這個鏈接返回一個新的遊標對象。
這些對象用來管理數據庫寫入操做和返回輸出。遊標是基於鏈接的,同一鏈接的不一樣遊標,彼此的操做都是即時可見的。
遊標方法
.execute(operation)
準備和執行一個數據庫操做(查詢或命令)。
.fetchone()
抓取遊標返回結果的第一行。若是沒有返回數據則輸出None。
.fetchmany(n)
抓取遊標返回結果的前n行
.fetchall()
抓取遊標返回結果的所有。它會影響性能。
fetchall返回的數據是個元組,數據庫裏每一個元素仍是一個元組,是數據庫裏的一行中的各條數據。
事務用於:
在python數據庫編程中,當遊標被創建的時候,就隱性的建議了一個事務。
commit方法會提交整個事務,沒有commit以前,全部execute都是不生效的。
rollback方法用於回滾全部當前的遊標操做。
#coding:utf-8 import pymysql #鏈接數據庫 conn = pymysql.connect("192.168.146.73","root","123.com","config") cursor = conn.cursor() #獲取自增值並賦值 cursor.execute("select max(appid) + 1 from SvrProcessConfig") new_id = cursor.fetchone() #寫入數據 sql = '''INSERT INTO SvrProcessConfig VALUES (%d,290,'thrdcnt=3;','XX',1) ''' % (new_id) try: cursor.execute(sql) conn.commit() except: conn.rollback() #關閉鏈接 conn.close()