Как создать копию запроса с другой схемой? - PullRequest
0 голосов
/ 24 марта 2020

Допустим, у меня есть объект / сеанс, который выглядит следующим образом:

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 в выбираемом запросе, но, похоже, он также изменяет исходный запрос.

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