Есть 2 таблицы A и B. Обе имеют столбцы с именами master и slave.Главные значения таблицы A должны быть обновлены до мастер-таблицы TableB (для строк с одинаковыми ведомыми значениями в таблице A и таблице B).
Поскольку Sqlite не имеет метода соединения и не поддерживает обновления нескольких таблиц, я вынужден рассмотреть другие варианты.
Работает следующий код.
tableB = Table('table_B', metadata, autoload=True)
tableA = Table('table_A', metadata, autoload=True)
ku = tableA.update().where(tableA.c.master == "All for One" ).values(master = "Shigaraki Tomura")
ku.execute()
Но когда я пытаюсь использовать разные значения в .values () вещи запутываются
ls = select(columns=[tableA.c.master,tableB.c.master], whereclause=tableA.c.slave == tableB.c.slave).distinct()
rows = ls.execute()
for i,j in rows:
ku = tableA.update().where(tableA.c.master == i).values(master = j)
ku.execute()
Ниже приведены сообщения об ошибках
File "/home/ehaacls/miniconda/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 505, in do_commit
dbapi_connection.commit()
sqlite3.OperationalError: database is locked
raise exc.ResourceClosedError("This Connection is closed")
sqlalchemy.exc.ResourceClosedError: This Connection is closed