Pathon 鏈接數據庫

SQL 數據庫 Python 提供了一系列標準的數據庫的 API,這裏咱們介紹 sqlite 數據庫的用法,其餘的數據庫的用法大同小異:sql

In [1]: import sqlite3 as db 首先咱們要創建或者鏈接到一個數據庫上:數據庫

In [2]: connection = db.connect("my_database.sqlite") 不一樣的數據庫有着不一樣的鏈接方法,例如 cx-oracle 數據庫的連接方式爲:安全

connection = db.connect(username, password, host, port, 'XE')oracle

一旦創建鏈接,咱們能夠利用它的 cursor() 來執行 SQL 語句:fetch

In [3]: cursor = connection.cursor() cursor.execute("""CREATE TABLE IF NOT EXISTS orders( order_id TEXT PRIMARY KEY, date TEXT, symbol TEXT, quantity INTEGER, price NUMBER)""") cursor.execute("""INSERT INTO orders VALUES ('A0001', '2013-12-01', 'AAPL', 1000, 203.4)""") connection.commit() 不過爲了安全起見,通常不將數據內容寫入字符串再傳入,而是使用這樣的方式:orm

In [4]: orders = [ ("A0002","2013-12-01","MSFT",1500,167.5), ("A0003","2013-12-02","GOOG",1500,167.5) ] cursor.executemany("""INSERT INTO orders VALUES (?, ?, ?, ?, ?)""", orders) connection.commit() cx-oracle 數據庫使用不一樣的方式:sqlite

cursor.executemany("""INSERT INTO orders VALUES (:order_id, :date, :symbol, :quantity, :price)""", orders)字符串

查看支持的數據庫格式:it

In [5]: db.paramstyle Out[5]: 'qmark' 在 query 語句執行以後,咱們須要進行 commit,不然數據庫將不會接受這些變化,若是想撤銷某個 commit,能夠使用 rollback() 方法撤銷到上一次 commit() 的結果:io

try: ... # perform some operations except: connection.rollback() raise else: connection.commit()

使用 SELECT 語句對數據庫進行查詢:

In [6]: stock = 'MSFT' cursor.execute("""SELECT * FROM orders WHERE symbol=? ORDER BY quantity""", (stock,)) for row in cursor: print row (u'A0002', u'2013-12-01', u'MSFT', 1500, 167.5) cursor.fetchone() 返回下一條內容, cursor.fetchall() 返回全部查詢到的內容組成的列表(可能很是大):

In [7]: stock = 'AAPL' cursor.execute("""SELECT * FROM orders WHERE symbol=? ORDER BY quantity""", (stock,)) cursor.fetchall() Out[7]: [(u'A0001', u'2013-12-01', u'AAPL', 1000, 203.4)] 關閉數據庫:

In [8]: cursor.close() connection.close()

相關文章
相關標籤/搜索