我试图过滤外键,并没有任何我找到的答案已借出任何结果。SQLALchemy filter_by()产生奇怪的外键sql
我的查询语句在哪里。
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
如果我在MySQL的CLI做一个简单的
Select * from Comments where post_id = 1
我得到一个结果集。
“wierd':pst_id_1's”被称为绑定参数。您可以通过将'echo = True'传递给'create_engine'来查看执行的实际查询。然后会有一个声明哪些参数已被实际传递。因此,您可以准确查看所查询的内容。用这个来找出查询之间的区别。 – javex