如何解决SQLite executemany要求的值超出预期
我正在尝试使用sqlite将列表插入数据库,第一个值是具有AUTOINCREMENT
属性的ID。这是代码:
# cursor.execute('''
# CREATE TABLE products (
# prod_id INTEGER PRIMARY KEY AUTOINCREMENT,# prod_name VARCHAR(20),# prod_brand VARCHAR(20),# price FLOAT
# )
# ''')
products = [
('Keyboard','Doctor Key',20.0),('Mouse','MasterClick',2.50)
]
cursor.executemany("INSERT INTO products VALUES (null,?,?),products")
我也尝试这样做:
cursor.executemany("INSERT INTO products (prod_id,prod_name,prod_brand,price) VALUES (null,productos")
但是在两种情况下,我都会遇到相同的错误:
Traceback (most recent call last):
File "leccion2-1.py",line 38,in <module>
cursor.executemany("INSERT INTO products VALUES (null,products")
TypeError: function takes exactly 2 arguments (1 given)
This answer对我不起作用。
谢谢。
解决方法
由于要传递变量而不是字符串,因此您需要在引号之外提供值。
cursor.executemany("INSERT INTO products VALUES (null,?,?)",products)
另请参阅此example:
import sqlite3
con = sqlite3.connect("samples.db")
cur = con.cursor()
examples = [(2,"def"),(3,"ghi"),(4,"jkl")]
cur.executemany("INSERT INTO samples VALUES (?,examples)
for row in cur.execute("SELECT * FROM samples"):
print row
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。