免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1753 | 回复: 0
打印 上一主题 下一主题

python实践:sqlite3简单入门 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-20 23:22 |只看该作者 |倒序浏览
继续阅读《Beginning Python》, From Novice to Professional, Second Editon的源代码;
附上笔者微调后的代码,已添加详细注释:

# 源代码来自“Beginning Python, From novice to professional, second Edtion”
# 在此非常感谢原作者;Magnus Lie Hetland
# 本文中所有注释由walnutcy(青核桃)完成,
# 青核桃的联系方式:walnutcy@gmail.com
# 青核桃的个人小站:http://gnssinfo.com
# 如有问题,欢迎大家在博客小站留言

import sqlite3

def convert(value):
        ''' 根据第一个字符内容,转换数据并返回;
        第一个字符为“~”,则转为字符串,否则转为浮点数 '''
    if value.startswith('~'):
        return value.strip('~')
    if not value:
        value = '0'
    return float(value)

# 连接数据库,sqlite3内部的实现是,若数据不存在,则直接创建
# sqlite3相关信息,在其官网上有详细介绍
conn = sqlite3.connect('food.db')
# 创建一个cursor的实例以备后边执行SQL语句;
curs = conn.cursor()
# 开始执行语句,这里为创建表: food
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
)
''')

# 创建查询语句,在此青核桃带大家一起看下python官方帮助文档中的介绍吧
# 这个非常重要,
# # Never do this -- insecure!
# symbol = 'IBM' # 不能用%s进行转换
# c.execute("select * from stocks where symbol = '%s'" % symbol)
# Do this instead
# t = ('IBM',)
# c.execute('select * from stocks where symbol=?', t)

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

for line in open('ABBREV.txt'):
    fields = line.split('^')
    vals = [convert(f) for f in fields[:len(fields)]]
    curs.execute(query, vals)

conn.commit()
conn.close()

代码测试需要ABBREV.txt文件,源代码中未附,这里笔者写了一个非常简单的,只有3条记录,如下:

~A0125^~Hello World^20.1^10.2^3.2^1.1^120.1^110.2^31.2^11.1
~A0165^~google^25.1^14.2^33.2^187.1^120.1^160.2^31.2^11.1
~A0184^~gnssinfo.com^28.1^140.2^34.2^541.1^120.1^140.2^31.2^11.1

执行指令完成后,可通过SQLITE3数据库的浏览工具查看,结果如下:
表定义图:
sqlite-food-1
插入的数据如下图:
sqlite-food-2
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP