Python 標準數據庫接口爲 Python DB-API,Python DB-API爲開發人員提供了數據庫應用編程接口。python
Python 數據庫接口支持很是多的數據庫,你能夠選擇適合你項目的數據庫:mysql
不一樣的數據庫你須要下載不一樣的DB API模塊,例如你須要訪問Oracle數據庫和Mysql數據,你須要下載Oracle和MySQL數據庫模塊。sql
DB-API 是一個規範. 它定義了一系列必須的對象和數據庫存取方式, 以便爲各類各樣的底層數據庫系統和多種多樣的數據庫接口程序提供一致的訪問接口 。數據庫
Python的DB-API,爲大多數的數據庫實現了接口,使用它鏈接各數據庫後,就能夠用相同的方式操做各數據庫。編程
Python DB-API使用流程:併發
一、python下安裝MySQLdb模塊fetch
(1)下載ui
根據Python多少位下載對應版本:atom
32位:https://pypi.python.org/pypi/MySQL-python/1.2.5spa
64位:http://arquivos.victorjabur.com/python/modules/MySQL-python-1.2.3.win-amd64-py2.7.exe
(2)下載exe版本的直接安裝便可,安裝的時候會檢測到你python安裝的路徑
二、數據庫鏈接
數據庫鏈接是經過mysqldb的connect()來建立鏈接
鏈接語法
import MySQLdb # 打開數據庫鏈接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
舉例:
#!/usr/bin/python # -*- coding: UTF-8 -*- #導入MySQLdb模塊 import MySQLdb #建立數據庫鏈接 db=MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操做遊標 cursor = db.cursor() # 使用execute方法執行SQL語句 cursor.execute("select * from xxx where xxx=xxx;") # 使用 fetchone() 方法獲取一條數據 result = cursor.fetchone() print result db.close()
三、數據庫插入操做:
數據庫更新、插入、刪除操做都須要執行sql語句以後再使用commit提交到數據庫執行
舉例:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打開數據庫鏈接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操做遊標 cursor = db.cursor() # SQL 插入語句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 執行sql語句 cursor.execute(sql) # 提交到數據庫執行 db.commit() except: # Rollback in case there is any error db.rollback() # 關閉數據庫鏈接 db.close()
四、數據庫查詢操做
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
實例:
查詢EMPLOYEE表中salary(工資)字段大於1000的全部數據:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打開數據庫鏈接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操做遊標 cursor = db.cursor() # SQL 查詢語句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 執行SQL語句 cursor.execute(sql) # 獲取全部記錄列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印結果 print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # 關閉數據庫鏈接 db.close()
執行結果:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
五、執行事務
事務機制能夠確保數據一致性。
事務應該具備4個屬性:原子性、一致性、隔離性、持久性。這四個屬性一般稱爲ACID特性。
Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。
於支持事務的數據庫, 在Python數據庫編程中,當遊標創建之時,就自動開始了一個隱形的數據庫事務。
commit()方法遊標的全部更新操做,rollback()方法回滾當前遊標的全部操做。每個方法都開始了一個新的事務。
舉例:
# SQL刪除記錄語句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 執行SQL語句 cursor.execute(sql) # 向數據庫提交 db.commit() except: # 發生錯誤時回滾 db.rollback()