외래 키를 필터링하려고하는데 내가 검색 한 결과 중 아무 것도 결과를 빌려주지 않았습니다.foreignkey에서 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)
여기 내 클래스 정의는 제 1 및 제 2 케이스에서 생산되고있다
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. 두 경우 모두 null 세트가 반환됩니다. 내가 MySQL의 CLI에 간단한
Select * from Comments where 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
나는 결과 세트를 얻을.
Comments = db.relationship(
'Comments',
backref='Post',
lazy='dynamic')
를 아니면 그냥 복사/붙여 넣기 문제 (단지 확인하기 위해)입니다 : 귀하의 모델 정의는 이상한
"wierd': pst_id_1' 물건"은 바운드 매개 변수라고합니다. 'echo = True'를'create_engine'에 전달함으로써 실행 된 실제 질의를 볼 수 있습니다. 그러면 매개 변수가 실제로 전달 된 문장이 있습니다. 따라서 쿼리 된 내용을 정확히 볼 수 있습니다. 이를 사용하여 쿼리의 차이점을 찾습니다. – javex