INSERT INTO оператор с переменной в Python - PullRequest
1 голос
/ 08 октября 2011

Я пытаюсь вставить результаты запроса в таблицу, но добавить переменную в набор результатов. Я рассмотрел некоторые похожие вопросы и думаю, что правильно представляю переменные запроса, но получаю ошибку «глобальная переменная не определена». Можете ли вы указать мне правильное направление? Я предполагаю, что это связано с тем фактом, что я пытаюсь представить инструкцию 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

Спасибо! * * 1004

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Вам не нужно делать два 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()
2 голосов
/ 08 октября 2011

Метод execute не возвращает значение. Вам нужно будет использовать fetchone или fetchall , чтобы получить результаты первого запроса.

...