Dev*_*mes 4 sqlalchemy python-3.x
我有这个型号
\n\nclass Post(Base):\n __tablename__ = \'posts\'\n id = Column(Integer, primary_key=True)\n content = Column(Text)\n author = Column(Integer, ForeignKey(\'users.id\'))\n to_topic = Column(Integer, ForeignKey(\'topics.id\'))\n\n def __init__(self, content: str, author: int, to_topic: int) -> None:\n self.content = content\n self.author = author\n self.to_topic = to_topic\n\nclass User(Base):\n __tablename__ = "users"\n id = Column(Integer, primary_key=True)\n username = Column(String(30))\n email = Column(String(40))\n password = Column(String(255))\n registred_at = Column(DateTime, default=datetime.datetime.now)\n last_logged_in = Column(DateTime)\n last_login_attempt = Column(DateTime)\n avatar = Column(Integer, ForeignKey(\'files.id\'))\n role = Column(String(20))\n email_confirm = Column(Boolean, default=False)\n children_forum = relationship(\'Forum\')\n children_topic = relationship(\'Topic\')\n children_post = relationship(\'Post\')\nRun Code Online (Sandbox Code Playgroud)\n\n我正在尝试获取包含 Post.content、Post.author.username 的查询,但如何在会话中执行此操作?
\n\n我试过
\n\n posts = db_session.query(Post, User).filter(\n Post.to_topic == topic_id).with_entities(Post.content, Post.author.username)\nRun Code Online (Sandbox Code Playgroud)\n\n但这不起作用,因为作者只是整数(id),所以我希望我需要以某种方式在一个查询中获取作者对象和发布对象,但我不知道如何。在 sql 中,只需 2 个查询就很容易,但在这里我不知道它\xc2\xb4s 是如何完成的。
\n query_results = db_session.query(Post, User).\
join(User, Post.author == User.id).\
filter(
Post.to_topic == topic_id
).all()
Run Code Online (Sandbox Code Playgroud)
我从未使用过 with_entities,但我知道这会给您一个元组列表,其中query_results[0]将是您的Post实例,并且query_results[1]将是您的User实例。
编辑:我相信您不必包含该Post.author == User.id位,但如果您明确连接,它会更清晰。
| 归档时间: |
|
| 查看次数: |
2933 次 |
| 最近记录: |