您的位置:首页 > 编程语言 > Python开发

python 基础教程 13数据库支持

2017-08-21 16:16 591 查看
数据库应用程序示例:

基于USDA的营养数据实验室提供的数据:https://www.ars.usda.gov/nutrientdata 点击下面的链接





点击download链接, 下载标题为Abbreviated下方的ASCII链接所指向的ASCCII格式的zip文件,取里面的ABBREV.txt文本文件,该文件数据每一行都有一个数据记录,字段以脱字符(^)进行分割, 数字字段直接包含数字,而文本字段包括波浪号(~)括起来的字符串值

将数据导入数据库:

#coding: utf-8
'''
Created on 2017年8月20日

@author: Leoi
'''
#importdata.py

import sqlite3

#convert将每一行分解为多个字段
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()    #创建一个光标conne.cursor()

try:
curs.execute('''
CREATE TABLE food(
id       TEXT        PRIMARY KEY,
desc     TEXT,
water    FLOAT,
kcal     FLOAT,
protein  FLOAT,
fat      FLOAT,
ash      FLOAT,
carbs    FLOAT,
fiber    FLOAT,
sugar    FLOAT
)

''')

except:
pass

query = 'INSERT INTO food VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'

for line in open(r'C:\Users\Leoi\Desktop\python code\ABBREV.txt'):
fields = line.split('^')
vals = [convert(f) for f in fields[:10]]  #此处修改为10,因为每个表有10个数据
curs.execute(query, vals)  #执行sql的INSERT语句将文本字段中的值插入到数据库中

conn.commit()
conn.close()


对数据库进行查询:

#coding: utf-8
#food_query.py

import sqlite3, sys

conn = sqlite3.connect('food.db')
curs = conn.cursor()  #游标,用于执行查询和检查结果

query = 'SELECT * FROM food WHERE %s' % 'kcal <= 100 AND fiber >=10'
print query
curs.execute(query)
names = [f[0] for f in curs.description]
for row in curs.fetchall():
for pair in zip(names, row):
print '%s: %s' % pair
print


将书上的sys.argv[1]改为了kcal <= 100 AND fiber >=10或其他sql查询条件,不用命令行的形式运行,该程序为一次性程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 数据库