【问题标题】:Inserting list into sqlite table column python3将列表插入sqlite表列python3
【发布时间】:2021-02-12 02:58:37
【问题描述】:

我一直在网上寻找答案,但似乎没有一个能解决我的问题。我收到以下错误:

line 17, in <module>
    c.execute('INSERT INTO semesters (semester) VALUES (?)',mystuff)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current 
  statement uses 1, and there are 3 supplied.

我在很多地方进行了很多更改,但我仍然不断收到此错误、另一个错误,或者它可以正常工作,但无法正确插入数据。

这是我的代码:

import sqlite3

conn = sqlite3.connect('scheduler.db')
c = conn.cursor()
c.execute('''DROP TABLE IF EXISTS semesters''')
c.execute('''CREATE TABLE semesters
                   (idse INTEGER PRIMARY KEY, semester TEXT, Idc INTEGER)''')
                     #FOREIGN KEY (Idc) REFERENCES careers (idc)

mystuff = [('Semester 1'),
           ('Semester 2'),
           ("Semester 3"),]

c.execute('INSERT INTO semesters (semester) VALUES (?)',mystuff)
conn.commit()

【问题讨论】:

  • 'INSERT INTO semesters (semester) VALUES (?, ?, ?)' 呢?
  • 刚试了,不行。我告诉它明确插入名为学期的列,我认为这就是为什么我只能使用一个“?”因为它只有一列。
  • 该死!我在看什么 :D 。您需要 3 个不同的 INSERT 语句,因为您实际上需要 3 条记录。
  • 你介意做一个例子吗?如果它有效,我可以选择你作为接受的答案:p

标签: python-3.x sqlite


【解决方案1】:

正如python sqlite3 documentation 建议的那样,使用非标准的快捷方式sqlite3.Connection.executemany() 而不仅仅是execute()

mystuff = [('Semester 1'),
           ('Semester 2'),
           ("Semester 3"),]

c.executemany('INSERT INTO stocks VALUES (?)', mystuff)
conn.commit()

【讨论】:

    猜你喜欢
    • 2020-02-20
    • 2019-03-27
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2021-05-28
    相关资源
    最近更新 更多