2017-04-03 12 views
0

나는 일반적으로 파이썬과 프로그래밍에 익숙하지 않다. 논리에 대한 도움을받을 수 있습니다.플라스크 SQLAlchemy 외래 키 질의

3 개의 사용자, 게시물, 댓글이 있습니다. 테이블 주석에는 사용자 열 "id"에 대한 Foreign_Key가있는 "user_id"열이 있습니다. 또한 post_id에 FK가있는 post_id로 사용됩니다.

comments.user_id = users.id & & comments_post_id = posts.id

내가 사용하고 특정 게시물을 조회하려면 :

post = Posts.query.filter_by(id=post_id).first_or_404() 

내가 사용하고있는 의견을 조회하려면 :

comments = Comments.query.filter_by(post_id=post_id).order_by(Comments.time.desc()).all() 

users 테이블에서 사용자 이름을 얻고 싶습니다. comments.user_id .... 여기 내 논리가 뒤섞여 있습니다.

FK를 사용하면 Users.username을 직접 참조 할 수 있습니까? 아니면 FK가 쿼리를 실행할 수 있도록 관계를 매핑합니다. comments.user_id = Users.id .... 여기서 사용자 이름과 모든 것을 얻습니다. 나는 이것을 매우 비효율적으로 수행하고 있다고 느낍니다.

나는 comments.user_username 나는 의견에 새 열을 수행하는 "comment.user_id = USER_ID 곳 Users.username"

{% if comments %} 
    {% for comment in comments %} 
    {{ comment.user_id }} 
    {{ comment.time }} 
    {{ comment.comment }} 
    {% endfor %} 
{% endif %} 

는 내가 필요로하는 무슨 생각으로 comment.user_id을 대체하고 싶습니다 &은 FK of users.username을 제공합니다. 150 오류가 계속 발생하고 열은 동일합니다. 데이터 정렬 및 데이터 정렬이 동일합니다.

class Comment(db.Model): 
    id = db.Column(db.Integer(), primary_key=1) 
    content = db.Column(db.Text(), nullable=0) 
    create_user_id = db.Column(db.Integer(), db.ForeignKey("user.id")) 
    create_user = db.relationship("User", foreign_keys=create_user_id) 
    post_id = dn.Column(db.Integer(), db.ForeignKey("post.id")) 

당신은 쓸 수 comment.create_user.username 템플릿 파일 :

+0

일반적으로 사용자 테이블을 주석으로 [JOIN] (https://en.wikipedia.org/wiki/Join_ (SQL))하면 해당 데이터도 가져올 수 있습니다. SQLAlchemy [relationships] (http://docs.sqlalchemy.org/en/latest/orm/relationships.html)는 ORM 측을 제공하며 조인을 사용하여 데이터를 열심히로드 할 수 있습니다. 예를 들어 * Users *와 * Comments * 사이에 관계를 구성하려면 [joinedload (Comments.user)'] (http://docs.sqlalchemy.org/en/latest/orm/loading_relationships)를 사용할 수 있습니다. .html # sqlalchemy.orm.joinedload) 등 –

+0

우수한, 당신은 중요한 도움이되었습니다. 고맙습니다! –

답변

0

당신 유형은 다음과 같이 SQLAlchemy의의 relationship하는 속성을 정의 할 수 있습니다.