1. 程式人生 > >第13章 資料庫支援

第13章 資料庫支援

13.1 Python資料庫API

13.2 SQLite和PySQLite SQLite小型資料庫引擎,可直接使用本地檔案,而不需要集中式資料庫儲存機制。 使用模組sqlite3實現的PySQLite。

13.2.1 起步

>>> import sqlite3
#建立直接到資料庫檔案的連線
>>> conn = sqlite3.connect('somedatabase.db')
#從連接獲得遊標,遊標可用來執行SQL查詢
>>> curs = conn.cursor()
#修改了資料,提交修改
>>> conn.commit()
#關閉連線
>>> conn.close() >>>

13.2.2 資料庫應用程式示例

import sqlite3

def convert(value):
    if value.startswith('~'):
        return value.strip('~')
    if not value:
        value = '0'
    return float(value)
conn = sqlite3.connect('food.db')
curs = conn.cursor()
curs.execute('''
CREATE TABLE food (
id TEXT PRIMAKY KEY,
desc TEXT,
water FLOAT,
kcal FLOAT,
protein FLOAT,
fat FLOAT,
ash FLOAT,
carbs FLOAT,
fiber FLOAT,
sugar FLOAT
)
'''
) query = 'INSERT INTO food VALUES (?,?,?,?,?,?,?,?,?,?)' field_count = 10 for line in open('ABBREV.txt'): fields = line.split('^') vals = [convert(f) for f in fields[:field_count]] curs.execute(query, vals) conn.commit() conn.close()
import sqlite3

conn = sqlite3.connect('food.db')
curs = conn.cursor()
query = 'SELECT * FROM food WHERE id = "07276"'
print(query) curs.execute(query) print("curs.description:",curs.description) names = [f[0] for f in curs.description] print("names:", names) for row in curs.fetchall(): print("row:",row) print("zip(names, row):",zip(names, row)) for pair in zip(names, row): print('{}: {}'.format(*pair)) print()