第13章 数据库支持

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()

猜你喜欢

转载自blog.csdn.net/u010819416/article/details/82748829