在SQLAlchemy中使用关系和ForeignKey模块

时间:2016-01-23 01:48:14

标签: python sqlalchemy

我对使用SQLAlchemy的两个模块感到有些困惑。这是我的代码:

Base = declarative_base()

class Restaurant(Base):
    __tablename__ = 'restaurant'
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)

class MenuItem(Base):
    __tablename__ = 'menu_item'
    name =Column(String(80), nullable = False)
    id = Column(Integer, primary_key = True)
    description = Column(String(250))
    price = Column(String(8))
    course = Column(String(250))
    restaurant_id = Column(Integer,ForeignKey('restaurant.id'))
    restaurant = relationship(Restaurant)

据我所知,ForeignKey用于定义menu_item表的restaurant_id列和餐厅表的id列之间的外键关系。但为什么餐厅=关系(餐厅)使用?

1 个答案:

答案 0 :(得分:3)

restaurant_id将引用id(列值)。 restaurant将引用一个Restaurant实例,该实例将在访问时从数据库中延迟加载(如果您之前设置了正确的内容,则会急切加载)。如果您在backref上设置relationship,则还可以访问MenuItem中的Restaurant个对象列表。