我是sqlalchemy和fastAPI的新手。我想知道有什么方法可以在插入引用数据之前自动检查引用数据。例如,我想在添加新的配置文件之前确保profile.user_id存在,但我不想自己做这件事。这可能吗?下面是我的表设置。
class User(Base):
__tablename__ = "user"
id = Column("id", Integer, primary_key=True, autoincrement=True)
email = Column(String, unique=True, nullable=False)
hashed_password = Column(String, nullable=False)
create_time = Column(DateTime, nullable=False, default=func.now())
login_time = Column(DateTime, nullable=False, default=func.now())
class Profile(Base):
__tablename__ = "user_profile"
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("user.id"), nullable=False)
name = Column(String, )
age = Column(Integer)
country = Column(Integer)
photo = Column(String, )
1条答案
按热度按时间7xllpg7q1#
Map类中缺少的是relationship。
在ORM中,这些关系负责确保外键存在,并使创建关系变得更加容易。
另外,如果你想在SQL端设置一个默认值(因为你使用了
default=func.now()
),你应该使用server_default=func.now()
关键字参数,否则,使用python端的等价物default=datetime.utcnow()
。最后,如果关系是一对一关系,请在
User.profiles
关系中使用uselist=False
关键字参数(最好也将其重命名为User.profile
)。这会发出: