1

2 つのフィルターを使用して行の ID を取得しようとしています。1 つのフィルターを使用して動作させることができますが、2 番目のフィルターを追加するとすぐに問題が発生します。誰か助けてください(はい、sqlalchemyチュートリアルを読みましたが、まだ問題があります)

私のテーブル(一部)

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

user_id のみが入力された空の行をテーブルに作成しました。

これでこの行が機能します(1つのフィルター)

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

2 番目のフィルター (まだ null になっている) を追加しようとすると、うまくいきません。次のエラーが表示されます: AttributeError:'Query' object has no attribute 'id'

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

私を助けてください、または正しい方向に向けてください

4

1 に答える 1

0

を呼び出すのを忘れた.first()ため、クエリはまったく実行さませんでした:

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

このクエリが何も返さない場合は、x_charになりますNone。クエリが何も返さない理由をデバッグするために、生成されたSQLを出力して、SQLAlchemyがデータベースに送信しているものを理解するのに役立てることができます。

x_char = session.query(Character).filter(and_(Character.user_id == u_id, Character.lock == None))
print x_char
于 2013-03-05T16:44:06.327 に答える