2013-03-05 2 views
1

2 개의 필터를 사용하여 행의 ID를 얻으려고합니다. 1 필터를 사용하면 효과가 있지만 두 번째를 추가하자마자 문제가 발생합니다. 누군가가 내가 작성에만 USER_ID와 함께 테이블에 빈 행을 생성SQLalchemy 필터로 행의 ID를 검색합니다.

class Character(Base): 
    __tablename__ = 'character' 
    id = Column(Integer, primary_key=True) 
    user_id = Column(Integer, ForeignKey('users.id')) 
    lock = Column(Boolean) 

내 테이블 (의 일부) (I는 여전히 문제로 SQLAlchemy의 자습서를 읽고 예) 도와주세요 수 에.

지금이 선 작업 (1 개 필터)

u_id = 1 
x_char = session.query(Character).filter_by(user_id=u_id).first() 
y = x_char.id 
print y 

나는 (여전히 널에 서) 두 번째 필터를 추가하려고 그것은 잘못. 나는 다음과 같은 오류를 얻을 : AttributeError를 '쿼리'객체는, 그래서 당신의 쿼리를 당신은 .first() 전화를 잊었

답변

0

더 atribute 'ID'

x_char = session.query(Character).filter(and_(Character.user_id == u_id, Character.lock == None)) 
y = x_char.id 
print y 

나를 도와 또는 올바른 방향으로 날 가리하십시오이 없습니다 모든실행되지 않은 :이 쿼리는 아무 것도 반환하지 않습니다

x_char = session.query(Character).filter(and_(Character.user_id == u_id, Character.lock == None)) 
x_char = x_char.first() 

경우, x_charNone 될 것입니다.

x_char = session.query(Character).filter(and_(Character.user_id == u_id, Character.lock == None)) 
print x_char 
+0

나는 여전히 같은 오류 –

+0

@HansdeJong를 얻을 : 나는 매우 많은 쿼리가 아무것도 반환하지 않는 이유을 디버깅하려면, 당신은 SQLAlchemy의 데이터베이스에 보내는 것을 이해하는 데 도움이 생성 된 SQL을 인쇄 할 수 있습니다 의심. '.first()'는'Query' 객체를 반환하지 않습니다. 따라서 반환되는 객체의 유형에 따라 오류가 적어도 다를 수 있습니다. –

+0

@HansdeJong : 당신이 보는 오류 메시지는'Query' 객체에서'id'에 대해 정확히 같은'AttributeError'가 있다면'.first()'호출을 적절하게 적용하지 않은 것입니다. 다른 경우 해당 오류를 공유하십시오. –

관련 문제