Можно ли запустить многопользовательские операторы в sqlite3 с python? - PullRequest
0 голосов
/ 09 апреля 2019

У меня более 2 таблиц в базе данных sqlite3.Я пытаюсь вставить данные в одну таблицу и обновить несколько столбцов в другой таблице.Возможно ли это?

Я пытался использовать executemany () и executetescript () во многих формах и формах.Я получил кучу сообщений об ошибках, и в основном потому, что 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 голосов
/ 09 апреля 2019

executescript() не будет принимать параметры, потому что параметры не принимаются в качестве аргумента, а только «скрипт». От Документ :

executescript (sql_script)

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...