TypeError('列表索引必须是整数,而不是str',)

时间:2017-01-28 19:04:17

标签: python sqlite bottle

我写了这段代码,我试图在表中添加一个新行(数据库sqlite)

@get('/inventory/add')
def inventory_add(db):
    db.execute("INSERT INTO inventory (name, category, location, date, amount) VALUES (?, ?, ?, ?, ?)", (item['name'], item['category'], item['location'], item['date'],  item['amount']))

    db.commit()

首先,当我执行它时,我得到了:

NameError("global name 'item' is not defined",)

所以我在互联网上挖掘我的python经验不足我决定将项目声明为一个列表,希望它可以工作:

item=[]
@get('/inventory/add')
def inventory_add(db):
    db.execute("INSERT INTO inventory (name, category, location, date, amount) VALUES (?, ?, ?, ?, ?)", (item['name'], item['category'],    item['location'], item['date'],  item['amount']))

    db.commit()

所以在运行上面的代码之后我得到了这个:

TypeError('list indices must be integers, not str',)

1 个答案:

答案 0 :(得分:2)

这里你需要的是字典而不是列表。所以,试试这个:

item={'name':'somename', 'category':'somecat','location':'someloc', 'date':'somedate','amount':'someamt'}

(不要在这里声明空字典,如果程序不知道在字典中查找哪里会显然会产生错误) 然后尝试你的代码,它应该正常工作。

对于Cursor错误,就像DYZ所说,您正在尝试提交游标,但是您应该尝试提交与数据库建立连接的实例。另外,请在您的页面上返回一些内容,否则用户将在访问该页面时卡住。