sqlalchemy column_property в ссылках на себя - PullRequest
1 голос
/ 14 июля 2020

Я не могу описать столбец «имя_прошедшего» (свойство_столбца). Я не знаю, как это сделать правильно.

class Worker(declarative_base()):
    __tablename__ = "staff_worker_info"

    id = Column(Integer, primary_key=True)
    first_name = Column(String(40), nullable=False)
    last_name = Column(String(40), nullable=False)

    invited_id = Column(Integer, ForeignKey('staff_worker_info.id'))
    invited = relationship("Worker", uselist=False, remote_side=[id], join_depth=1)

    # I don't know how to describe this column
    invited_name = column_property(
         select([Worker.first_name]). \
         where(Worker.id == invited_id).\
         label('invited_n'))

Я понимаю, почему это не работает, но я не знаю, как это написать по-другому.

Я должен получить такой SQL запрос.

SELECT staff_worker_info.id, staff_worker_info.first_name staff_worker_info.last_name, staff_worker_info.invited_id,
        (SELECT worker_invited.first_name  
         FROM staff_worker_info AS worker_invited
         WHERE staff_worker_info.invited_id = worker_invited.id) AS invited_n,
FROM staff_worker_info 

1 Ответ

0 голосов
/ 15 июля 2020

Я нашел способ. Но ему это не понравилось.

invited_name = column_property(
        select([text("invited_table.first_name")]).
            where(text("invited_table.id = staff_worker_info.invited_id")).
            select_from(text("staff_worker_info AS invited_table")).
            label('invited_n'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...