Я на самом деле не в курсе того, что происходит под капотом, но в шаблоне ORM объект соответствует определенной строке в конкретной таблице.Если вы попытаетесь добавить один и тот же объект в две разные таблицы в двух разных базах данных, это не будет хорошей практикой, даже если определение таблицы будет абсолютно одинаковым.
Что бы я сделал, чтобы обойти этопроблема заключается в том, чтобы просто создать новый объект, который является копией исходного объекта, и добавить его в базу данных:
session1 = SessionSRC()
session1.add(item)
session1.commit()
new_item = Datum(item.Key, item.Value)
session2 = SessionDST()
session2.add(new_item)
session2.commit()
print new_item in session2 # >>> True
print session2.query(Datum).all() # >>> [<__main__.Datum object at 0x.......>]
session2.close()
session1.close()
Обратите внимание, что session1
не закрывается сразу, чтобы иметь возможность прочитать атрибуты исходного объектапри создании нового объекта.