Перенос данных из одной БД в другую - PullRequest
0 голосов
/ 09 мая 2019

Я хочу перенести с помощью 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.

Спасибо за возможные сообщения и помощь.

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