我正致力于从多个excel电子表格构建数据库。我已将excel数据提取到列名和行值列表中,并希望构建函数以自动化使用python将数据插入sqlite3数据库的过程。我试图将行值插入到现有的表和列中,但遇到了问题。我希望能够将名称和值作为变量插入以帮助自动化该过程,但无法找到使用变量同时指定名称和值的方法。这就是我到目前为止所拥有的:
#setting up the code
import sqlite3
conn = sqlite3.connect(databaseName)
c=conn.cursor()
tableName = 'exampleTable'
columnName = 'exampleColumn'
rowValue = 123456
假设已经创建了表和列,让我们继续插入行值。所以我知道你可以用这两种方式插入值:
c.execute("INSERT OR IGNORE INTO {tn} ({cn}) VALUES (123456)" .format(tn=tableName, cn=columnName))
或
c.execute("INSERT OR IGNORE INTO exampleTable (exampleColumn) VALUES (?)" , rowValue)
有没有人知道如何将这两种方法结合起来?
如果我尝试:
c.execute("INSERT OR IGNORE INTO {tn} ({cn}) VALUES ({rv})".format(
tn=tableName, cn=columnName, rv=rowValue))
我收到的错误是:
sqlite3.OperationalError: no such column: 123456 #(rowValue)
或者,如果我尝试:
c.execute("INSERT OR IGNORE INTO ? (?) VALUES (?)",
tableName, columnName, rowValue)
我收到错误:
TypeError: function takes at most 2 arguments (4 given)
尝试将两种方法结合起来:
c.execute(
"INSERT OR IGNORE INTO {tn} ({cn}) VALUES (?)".format(
tn=tableName, cn=columnName),
rowValue)
给出错误:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
有人有解决方案吗?