Я хочу перенести с помощью sqlalchemy данные из одной базы данных в другую. Проблема в том, как я могу убедиться, что идентификатор не равен ни одному, чтобы целевая БД, а не исходная БД, распознавала объекты как новые.
Грубый пример:
Объект в исходной БД футболки класса:
{id = 1, color = 'red'}
Теперь, когда я пытаюсь скопировать объект в целевую базу данных, я подумал, что будет достаточно установить идентификатор вручную на none .
Вот соответствующий код:
def transfer_from_db1_to_db2(db_config_section_1, db_config_section_2):
cloths = db_op.db_get_all_entrys_of(db_config_section_1, Cloth)
cloths_no_id = []
for cloth in cloths:
cloth.id = None;
cloths_no_id.append(cloth)
db_op.db_save(cloths_no_id, db_config_section_2)
def db_get_all_entrys_of(db_config_section:str, class_type):
session = create_session(db_config_section)
objects = session.query(class_type).all()
session.close()
return objects
def db_save(objects:[], db_config_section:str):
session = create_session(db_config_section)
for obj in objects:
session.add(obj)
session.flush()
session.commit()
session.close()
Здесь сообщение об ошибке (сокращено):
Traceback (most recent call last):
...
File "C:\Users\user1\Anaconda3\lib\site-packages\sqlalchemy\orm\persistence.py", line 797, in _emit_update_statements
(table.description, len(records), rows))
sqlalchemy.orm.exc.StaleDataError: UPDATE statement on table 'cloth' expected to update 159757 row(s); 0 were matched.
Спасибо за возможные сообщения и помощь.