Как избежать nameError в sqlalchemy при использовании ORM для базы данных MySQL?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как избежать nameError в sqlalchemy при использовании ORM для базы данных MySQL?

Сообщение Anonymous »

Как мне избежать наличия имени, когда определения класса для каждой таблицы находятся в другом файле при использовании 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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