在python中使用变量INSERT INTO语句

时间:2011-10-08 16:23:26

标签: python sql sqlite variables insert

我正在尝试将查询结果插入表中,但是将一个变量添加到结果集中。我看了一些类似的问题,我认为我正确地表示了查询变量,但我得到了一个“未定义的全局变量”错误。你能为我指出正确的方向吗?我猜这与我试图用变量表示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 个答案:

答案 0 :(得分:2)

execute方法不返回值。您需要使用fetchonefetchall才能获得第一个查询的结果。

答案 1 :(得分:2)

您无需进行两次SQL查询即可完成此操作。而是使用INSERT INTO ... SELECT ...形式的INSERT查询:

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()