Как написать SQL-запрос через SQLAlchemy, который возвращает записи из связи таблицы «1-ко-многим» по условию из другой Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как написать SQL-запрос через SQLAlchemy, который возвращает записи из связи таблицы «1-ко-многим» по условию из другой

Сообщение Anonymous »

У меня есть 2 пары таблиц orm со связями «один ко многим», база данных Postgresql, асинхронное выполнение:

Код: Выделить всё


engine = create_async_engine(f"postgresql+asyncpg://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}", echo=True)

session = async_sessionmaker(engine, expire_on_commit=False)

class Base(DeclarativeBase):

id: Mapped[int] = mapped_column(primary_key=True)

class CandidatesDB(Base):

__tablename__ = 'candidates'

first_name = mapped_column(String(20), nullable=False)

second_name = mapped_column(String(20), nullable=False)

age: Mapped[int]

status: Mapped[int]

desired_position = mapped_column(String(30), index=True, nullable=False)

education_degree: Mapped[int]

working_experience = mapped_column(String(1000))

about_oneself = mapped_column(String(1000))

published: Mapped[bool] = mapped_column(default=True)

time_create: Mapped[datetime] = mapped_column(server_default=text("TIMEZONE('utc', now()) "))

skills: Mapped[List["SkillsDB"]] = relationship()

class SkillsDB(Base):

__tablename__ = 'skills'

foreign_key: Mapped[int] = mapped_column(ForeignKey("candidates.id", ondelete="CASCADE"))

skill_name = mapped_column(String(30), index=True, nullable=False)

level: Mapped[int]

years_of_experience: Mapped[int]

last_used_year: Mapped[int]

class JobOpeningsDB(Base):

__tablename__ = 'job_openings'

title = mapped_column(String(40), index=True, nullable=False)

description = mapped_column(String(1000))

address = mapped_column(String(100), index=True, nullable=False)

salary: Mapped[int] = mapped_column(index=True)

time_create: Mapped[datetime] = mapped_column(server_default=text("TIMEZONE('utc', now()) "))

skills: Mapped[List["RequiredSkillsDB"]] = relationship()

class RequiredSkillsDB(Base):

__tablename__ = 'required_skills'

foreign_key: Mapped[int] = mapped_column(ForeignKey("job_openings.id", ondelete="CASCADE"))

skill_name = mapped_column(String(30), nullable=False)

minimal_level: Mapped[int]

minimal_years_of_experience: Mapped[int]

Мне нужно сделать запрос, который бы возвращал подходящих кандидатов по имени и уровню (равному или большему) навыков исходя из вакансии и наоборот.
Я не могу придумать никакого варианта. Возможно ли это вообще сделать?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -to-many-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»