Как мне избежать наличия имени, когда определения класса для каждой таблицы находятся в другом файле при использовании sqlalchemy для управления базой данных MySQL? < /p>
Например: < /p>
# in dish.py
class Dish(Base):
__tablename__ = "dishes"
ID: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(255))
composition: Mapped[List["Recipe"]] = relationship(
back_populates="dish",
foreign_keys="Recipe.ID_dish")
def get_ingredient_list(self):
return composition
# in ingredient.py
class Ingredient(Base):
__tablename__ = "ingredients"
ID: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(255))
in_dishes: Mapped[List["Recipe"]] = relationship(
back_populates="ingredient",
foreign_keys="Recipe.ID_ingredient")
# in recipe.py (the linking table)
class Recipe(Base):
__tablename__ = "recipe"
ID_dish: Mapped[int] = mapped_column(Integer, ForeignKey("dishes.ID"), primary_key=True)
ID_ingredient: Mapped[int] = mapped_column(Integer, ForeignKey("ingredients.ID"), primary_key=True)
amount: Mapped[float] = mapped_column(DECIMAL(5,2))
dish: Mapped["Dish"] = relationship(
back_populates="composition",
foreign_keys=[ID_dish])
ingredient: Mapped["Ingredient"] = relationship(
back_populates="in_dishes",
foreign_keys=[ID_ingredient])
# in the main file
from dish import Dish
from ingredient import Ingredient
from recipe import Recipe
ing_list = some_dish.get_ingredient_list()
print(ing_list)
< /code>
Моя проблема заключается в том, что это возвращает имя имени, где классы не определены. Я предполагаю, что это происходит потому, что связанные классы не импортируются в модулях.
Как я могу решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/797 ... l-database
Как избежать nameError в sqlalchemy при использовании ORM для базы данных MySQL? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как избежать nameError в sqlalchemy при использовании ORM для базы данных MySQL? [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-