fastapi 中 Column的ForeignKey
时间: 2023-09-13 21:05:58 浏览: 178
parquet-column-1.10.1-API文档-中文版.zip
在FastAPI中,使用SQLAlchemy进行数据库操作时,可以使用Column来定义表结构。如果定义了一个Column,并且将其标记为外键(ForeignKey),则该列将与其他表的列进行关联,以建立表之间的关系。
例如,假设我们有一个User模型和一个Item模型,我们希望将Item模型中的列user_id与User模型中的列id进行关联,我们可以在定义user_id列时将其标记为外键:
```python
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String(50), unique=True, nullable=False)
password_hash = Column(String(128), nullable=False)
is_active = Column(Boolean(), default=True, nullable=False)
items = relationship("Item", back_populates="owner")
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
title = Column(String(50), nullable=False)
description = Column(String(100))
owner_id = Column(Integer, ForeignKey("users.id"))
owner = relationship("User", back_populates="items")
```
在上面的代码中,我们使用`ForeignKey("users.id")`来标记owner_id列为外键,并指定它与User模型中的id列相关联。我们还定义了一个关系属性owner,以便在查询Item模型时可以轻松地访问User模型。
请注意,使用外键可以帮助我们轻松地建立表之间的关系,但是在使用外键时,您需要确保在插入或更新数据时,外键列中的值必须引用其他表中的现有值。否则,将引发IntegrityError。
阅读全文