category
声明
connection.execute('''
CREATE TABLE category (
cat_id INTEGER PRIMARY KEY AUTOINCREMENT,
cat_name TEXT NOT NULL
);
''')
逻辑:
for cat in categories:
'''
debugging only
'''
print(category)
try:
connection.execute("""
INSERT INTO category
(cat_name)
VALUES (?) """, (cat)
)
except:
print('Error Occurred inserting category: {}'.format(cat))
我尝试打印出categories
的值并得到我输入的内容:
['Valu1', 'Valu2', 'Valu3', 'Valu4']
当我执行时,它会命中except:
块。我验证了category
存在
有什么想法?
谢谢
答案 0 :(得分:0)
在这部分
connection.execute("""
INSERT INTO category
(cat_name)
VALUES (?) """, (cat)
)
你需要一个猫后的逗号,就像这样
connection.execute("""
INSERT INTO category
(cat_name)
VALUES (?) """, (cat,)
)
所以这将是一个元组。
哦,并且在回答你关于如何获取错误消息的评论问题时,我将把它放在这里以便它将被正确格式化(当我将它放在缩进下面的注释中时):
except Exception as e:
print('Error Occurred inserting category: {}'.format(cat), e)
答案 1 :(得分:0)
要检查两件事。首先是connection
变量,实际连接或光标(c = connection.cursor()
)。其次,您忘记提交更改connection.commit()
。
答案 2 :(得分:0)
如果您没有错误消息则几乎没用。尝试打印except
上的例外消息。
错误:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
添加(cat,)
是正确的解决方案。
cur.execute("INSERT INTO category (cat_name) VALUES (?)", (cat,))