2016-12-28 3 views
0

특정 user_id에 대한 모든 행을 반환하려고합니다. 아래의 쿼리 # 1과 # 2를 실행하면 .all()을 지정하더라도 발견 된 첫 번째 행만 반환됩니다.".all()"이있는 SQLAlchemy 쿼리 필터가 모든 행을 반환하지 않습니다.

# 3과 같이 .with_entities을 사용하면 모든 행이 예상대로 반환됩니다.

눈의 두 번째 쌍을 고맙게 생각합니다. 고맙습니다.

문제가 있다면 MySQLDB (5.5.47 버전), Flask 0.10.1 및 SQL-Alchemy 2.1을 사용하고 있습니다.

  1. 반환 첫 번째 행의 경우 :

    result = MyUserClass.query.filter_by(user_id=self.user_id).all() 
    
  2. 이것은 또한 단지 첫 번째 행 반환

    result = MyUserClass.query.filter(MyUserClass.user_id == self.user_id).all() 
    
  3. 작품을 예상대로 모든 행 반환

    MyUserClass.query.filter_by(user_id=self.user_id).with_entities(MyUserClass.myColumn).all() 
    
+1

'user_id'는 기본 열로 표시되어 있습니까? –

+0

안녕하세요, user_id가 기본 키가 아닙니다. 그게 있어야합니까? – VanBasten

+0

나는 그 행동의 이유를 찾고있다. 기본 키로 표시되었거나 고유성 제약 조건이있는 경우 문제를 지적 할 수 있습니다. –

답변

1

used_id 열은 Martins Pieters가 지적한 것처럼 (MySQLDB에는없는) 클래스 정의에서 기본 키 열로 표시되었습니다. 새 열을 추가하고이를 기본 키로 만들면 문제가 해결됩니다.

+0

해결책으로 답을 작성해야합니다. –