python爲數據庫訪問開發了統一的API(Application Programming Interface,應用程序編程接口):DB-API.python
MySQL的實現叫作MySQLdb,Oracle實現爲Oracledb。數據庫
每一個模塊都包含一個connect()方法,它返回一個DB-API鏈接對象。編程
一、鏈接對象的API: 下面例子使用用戶名/口令鏈接本地主機(localhost)上的MySQL數據庫test.fetch
>>> import MySQLdbspa
>>> conn = MySQLdb.connect(host='localhost', user='root',passwd='123456', db='test');對象
二、鏈接對象經過cursor()方法爲應用提供一個遊標:接口
cursor = conn.cursor()開發
遊標是數據庫訪問的中心。經過execute()方法,能夠向數據庫發送SQL並處理任何結果。get
例如1:使用MySQL鏈接所生成的遊標向數據庫插入了一個新行,而後經過輸出受影響行的數目來驗證插入。對於插入,這個值應當總爲1.it
>>> cursor.execute("INSERT test VALUES(5, 'test')");
1L
>>> print 'Affected rows: ', cursor.rowcount;
Affected rows: 1
例2:查詢處理,使用execute()方法向數據庫發送SQL.
>>> cursor.execute("SELECT id, username FROM test ORDER BY id");
4L
>>> for row in cursor.fetchall(): #遊標對象提供的獲取方法:fetchone()(返回一行元組,其中每一個元素表示返回行中的一列), fetchmany()(處於fetchone()與fetchall()之間), fetchall()(從查詢中獲取全部結果,放在python元組列表中)
... print 'key: ', row[0];
... print 'value: ', row[1];
...
key: 1
value: John
key: 2
value: Mary
key: 9
value: Rose
key: 10
value: Hello
完成相應的操做後關閉鏈接:
>>> conn.close();
三、參數化SQL
參數化SQL是帶有佔位符的SQL語句,能夠向其傳遞參數
cursor.execute( 'INSERT colors(cour, abbr) VALUES(%s, %s )', ('blue', 'bl') );
使用cursor.execute()一次只能插入一條記錄,使用cursor.executemany()能夠插入多條:
cursor.executemany("INSERT colors(cour, abbr) VALUES(%s, %s)", (('blue', 'bl'), ('purple', 'ppl'), ('orange', 'orn') ) );