微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLite executemany要求的值超出预期

如何解决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 举报,一经查实,本站将立刻删除。