Допустим, у меня есть объект / сеанс, который выглядит следующим образом:
schema_id = 'SchemaA'
engine = sa.create_engine("my_db_here")
engine.update_execution_options(schema_translate_map={None: schema_id})
DBSession = scoped_session(sessionmaker(
bind=engine
))
Base = declarative_base()
class Person(Base):
id = sa.Column(sa.Integer, primary_key=True)
first_name = sa.Column(sa.Text)
last_name = sa.Column(sa.Text)
date_of_birth = sa.Column(sa.DateTime)
У меня есть запрос, который выглядит следующим образом:
query = DBSession.query(Person).filter(first_name=='Joe')
На самом деле объект запроса очень более сложный, но это простой пример.
Я хотел бы написать функцию, которая с учетом объекта запроса и нового schema_id создает новый объект запроса, который соответствует исходному запросу, но с новая схема без изменения исходного объекта.
Я пытался использовать members.cloned_traverse в выбираемом запросе, но, похоже, он также изменяет исходный запрос.