我正在尝试过滤外键,但我搜索的所有 SO 答案都没有提供任何结果。
我的查询语句在哪里。
testing = Comments\
.filter(Comments.post_id==post_id)
print(testing)
testing = Comments\
.query.join(Post, aliased=True)\
.filter(Comments.post_id==post_id)
print(testing)
这是我的类定义的样子
class Comments(db.Model):
comment_id = db.Column(db.Integer, primary_key=True)
post_id = db.Column(
db.Integer,
db.ForeignKey("Post.post_id"),
nullable=False)
class post(db.Model):
post_id = db.Column(db.Integer, primary_key=True)
Comments = db.relationship(
'Comments',
backref='Post',
lazy='dynamic')
从第一种和第二种情况产生的实际 SQL 查询。他们都有这个奇怪的 :post_id_1 东西。在这两种情况下,我都得到了一个空集。
FROM "Comments"
WHERE "Comments".post_id = :post_id_1
FROM "Comments" JOIN "post" AS "post_1" ON "post_1".post_id = "Comments".post_id
WHERE "Comments".post_id = :post_id_1
如果我做一个简单的
Select * from Comments where post_id = 1
在 mysql CLI 中,我得到了一个结果集。