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()