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