Можно ли запускать многозначные операторы в sqlite3 с помощью python?

#python #sqlite

#python #sqlite

Вопрос:

У меня есть более 2 таблиц в базе данных 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:

executescript() не будет принимать параметры, потому что, ну, он не принимает параметры в качестве аргумента, он принимает только «сценарий». Из документа:

executescript(sql_script)

Это нестандартный удобный метод для одновременного выполнения нескольких операторов SQL. Сначала он выдает оператор COMMIT, а затем выполняет SQL-скрипт, который он получает в качестве параметра.

sql_script может быть экземпляром str.

Например, это может использоваться для создания нескольких таблиц в одном скрипте.

executemany() запускает один sql для последовательности параметров.

Ни один из методов не является подходящим инструментом для этой работы. Вероятно, вам придется разделить его на два вызова execute() .