Author / class Book
from sqlalchemy import Column, Integer, String, ForeignKey, Table
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
author_publisher = Table(
"author_publisher",
Base.metadata,
Column("author_id", Integer, ForeignKey("author.author_id")),
Column("publisher_id", Integer, ForeignKey("publisher.publisher_id")),
)
book_publisher = Table(
"book_publisher",
Base.metadata,
Column("book_id", Integer, ForeignKey("book.book_id")),
Column("publisher_id", Integer, ForeignKey("publisher.publisher_id")),
)
class Author(Base):
__tablename__ = "author"
author_id = Column(Integer, primary_key=True)
first_name = Column(String)
last_name = Column(String)
books = relationship("Book", backref=backref("author"))
publishers = relationship(
"Publisher", secondary=author_publisher, back_populates="authors"
)
class Book(Base):
tablename = "book"
book_id = Column(Integer, primary_key=True)
author_id = Column(Integer, ForeignKey("author.author_id"))
title = Column(String)
publishers = relationship(
"Publisher", secondary=book_publisher, back_populates="books"
)
это ведь одно и то же?
те же яйца, только в профиль
благодарю 🤝
А разве первые два подойдут для ORM?
там был еще один класс, то есть, в итоге 5. Все 5 таблиц были созданы. Так что да.
Получается для создания таблицы не обязательно создавать класс, если будешь использовать orm в алхимии?
честно говоря, я тут уж точно не советчик) лучше подождать покуда ответит кто-то более осведомлённый в этом вопросе сейчас сам перебираю, пробую, что работает что нет… так сказать, метод проб и ошибок. но в данном случае запустив всё это дело (в конце было: Base.metadata.create_all(engine)) всё в итоге создалось.
Я просто пока работал только с core алхимии, и там таблицы создаются через создание экземпляров класса Table, как в первых двух случаях. А вот в доке к orm было сказано создавать свои классы. Сам я orm пока не трогал
Обсуждают сегодня