Python SQLite3,如何同时将变量作为表名和值插入

时间:2015-06-25 17:37:19

标签: python excel sqlite

我正致力于从多个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.

有人有解决方案吗?

0 个答案:

没有答案