gpt4 book ai didi

python - 将外键设置为 nullable=false?

转载 作者:行者123 更新时间:2023-11-28 17:25:24 24 4
gpt4 key购买 nike

如果总是希望数据库中的该列有外键,您是否将外键设置为 nullable=false

我正在使用 sqlalchemy 并使用所需的外键设置我的模型。这有时会导致我更频繁地运行 session.commit(),因为我需要父模型有一个 id 并被完全创建,以便在 ORM 中构建一个子对象。什么被认为是最佳实践?我的模型如下:

class Location(Base):
__tablename__ = 'locations'

id = Column(Integer, primary_key=True)
city = Column(String(50), nullable=False, unique=True)

hotels = relationship('Hotel', back_populates='location')


class Hotel(Base):
__tablename__ = 'hotels'

id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False, unique=True)
phone_number = Column(String(20))
parking_fee = Column(String(10))
location_id = Column(Integer, ForeignKey('locations.id'), nullable=False)

location = relationship('Location', back_populates='hotels')

最佳答案

您不需要执行 session.commit() 来获取 ID; session.flush() 就可以了。

更好的是,如果设置关系,则根本不需要获取 ID,因为 SQLalchemy 会计算出执行 INSERT 的顺序。您可以简单地执行以下操作:

loc = Location(city="NYC", hotels=[Hotel(name="Hilton")])
session.add(loc)
session.commit()

它会正常工作。

关于python - 将外键设置为 nullable=false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39419762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com