sink ??? 2019-10-20 21:11 采纳率: 0%
浏览 705

python基础教程13章的数据库代码案例不能正常运行

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 PRIMARY 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,sys

conn = sqlite3.connect('food.db')
curs = conn.cursor()

query = 'SELECT*FROM food WHERE'+ sys.argv[1]
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('{}:{}'.format(*pair))
print()

    之后显示
    Traceback (most recent call last):

File "C:/Users/Administrator/AppData/Local/Programs/Python/Python38/123.py", line 6, in
query = 'SELECT*FROM food WHERE'+ sys.argv[1]
IndexError: list index out of range
这是出了什么问题?求告知

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-21 00:16
    关注

    程序运行需要你带上一个参数,你参数带了没有。
    用 python 你的程序.py xxx
    这个xxx可以是 字段=什么值
    query = 'SELECT*FROM food WHERE'+ sys.argv[1]
    这里where后面还应该空一格。

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划