我写了这段代码,我试图在表中添加一个新行(数据库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',)
答案 0 :(得分:2)
这里你需要的是字典而不是列表。所以,试试这个:
item={'name':'somename', 'category':'somecat','location':'someloc', 'date':'somedate','amount':'someamt'}
(不要在这里声明空字典,如果程序不知道在字典中查找哪里会显然会产生错误) 然后尝试你的代码,它应该正常工作。
对于Cursor错误,就像DYZ所说,您正在尝试提交游标,但是您应该尝试提交与数据库建立连接的实例。另外,请在您的页面上返回一些内容,否则用户将在访问该页面时卡住。