Python中带变量的INSERT INTO语句

1 投票
2 回答
3202 浏览
提问于 2025-04-17 03:56

我正在尝试把一个查询的结果插入到一个表格里,但我想在结果中加一个变量。我查了一些类似的问题,觉得我对查询变量的表示应该是对的,但我却遇到了“全局变量未定义”的错误。你能帮我指点一下方向吗?我猜这可能和我用变量表示SELECT语句有关,但我不太确定语法应该是什么样的。

def main():
    datadump()
    d = datetime.date.today()
    queryCurs.execute('SELECT * FROM data ORDER BY ac')
    sqlresults = queryCurs.fetchall()
    x,y,z = sqlresults
    queryCurs.execute('INSERT INTO history VALUES (?,?,?,?)',
    (d, x, y, z))
    createDb.commit

谢谢!

2 个回答

2

execute 方法不会返回任何值。如果你想获取第一次查询的结果,就需要使用 fetchonefetchall 方法。

2

你不需要做两个SQL查询来完成这个操作。相反,可以使用一种叫做INSERT的查询,格式是 INSERT INTO ... SELECT ...

conn=sqlite3.connect(...)
cursor=conn.cursor()

today = datetime.date.today()
sql='''
    INSERT INTO history
    SELECT ?, foo, bar, baz
    FROM data
    ORDER BY ac
'''
cursor.execute(sql,[today])
conn.commit()

撰写回答