sqlalchemy relationship
时间: 2023-12-15 18:06:09 浏览: 276
python-sqlalchemy
SQLAlchemy中的relationship是用来定义数据库表之间的关系的工具。它允许我们在对象模型中表示实体之间的关联,例如一对多、多对一和多对多关系。
通过relationship,我们可以在模型类中定义一个属性,用于表示两个表之间的关系。这个属性可以在查询时被使用,从而方便地获取相关联的数据。
在使用relationship之前,需要导入`relationship`和`backref`这两个类或函数。
下面是一个例子,展示了如何在SQLAlchemy中使用relationship:
```python
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
posts = relationship('Post', backref='user')
class Post(Base):
__tablename__ = 'posts'
id = Column(Integer, primary_key=True)
title = Column(String)
user_id = Column(Integer, ForeignKey('users.id'))
# 创建数据库引擎和会话
engine = create_engine('sqlite:///database.db')
Session = sessionmaker(bind=engine)
session = Session()
# 创建表格
Base.metadata.create_all(engine)
# 创建用户和帖子实例
user = User(name='John')
post = Post(title='Hello World')
# 建立关系
user.posts.append(post)
# 提交到数据库
session.add(user)
session.commit()
# 查询数据
user = session.query(User).first()
print(user.posts) # 输出与该用户关联的所有帖子
```
阅读全文