首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从查询构建器中提取唯一关系?

要从查询构建器中提取唯一关系,您可以使用distinct()方法

以下是一个使用SQLAlchemy查询构建器的例子:

代码语言:javascript
复制
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)

class Post(Base):
    __tablename__ = 'posts'
    id = Column(Integer, primary_key=True)
    title = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))

    user = relationship("User", back_populates="posts")

User.posts = relationship("Post", order_by=Post.id, back_populates="user")

# 创建数据库引擎和会话
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

# 添加一些示例数据
user1 = User(name="Alice")
user2 = User(name="Bob")
post1 = Post(title="Post 1", user=user1)
post2 = Post(title="Post 2", user=user1)
post3 = Post(title="Post 3", user=user2)

session.add_all([user1, user2, post1, post2, post3])
session.commit()

# 提取含有唯一用户的帖子
unique_posts = session.query(Post).join(User).distinct(User.name).all()

# 输出结果
for post in unique_posts:
    print(f"{post.title} by {post.user.name}")

在这个例子中,我们首先创建了一个具有用户和帖子关系的简单数据库。然后,我们添加了一些示例数据。最后,我们使用distinct()方法提取与不同用户关联的帖子。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券