是否可以在sqlite3中使用python运行multible语句?

时间:2019-04-09 16:10:07

标签: python sqlite

我在sqlite3数据库中有两个以上的表。我试图将数据插入一个表并在另一表中更新几列。有可能吗?

我试图以多种形状和形式使用executemany()和executescript()。我收到了一堆错误消息,主要是因为execute不会接受我的参数。

with sqlite3.connect('database.db') as conn:
    cur = conn.cursor()
    cur.executescript("""INSERT INTO prev_users (
                                imei_prev,
                                user_id_prev,
                                start_date,
                                end_date,
                                type_prev)
                               VALUES (?,?,?,?,?);
                               UPDATE phones
                                SET owner = (?), date = (?), state = (?)
                                WHERE imei = (?);
                               """,(user['imei'], user['user_id'], user['date'], date, user['type'], "None", date, "In Progress", user['imei']))

1 个答案:

答案 0 :(得分:0)

executescript()将不接受参数,因为它不将参数作为参数,而仅接受“脚本”。来自the doc

  

执行脚本(sql_script)

     

这是一次一次性执行多个SQL语句的非标准便捷方法。它先发出COMMIT语句,然后发出   执行作为参数获取的SQL脚本。

     

sql_script可以是str的实例。

例如,它可能用于在一个脚本中创建多个表。

executemany()对一系列参数运行一个sql。

这两种方法都不适合该工作。您可能必须将其分为两个对execute()的调用。