版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010819416/article/details/82748829
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()