通过过滤器在SQLalchemy中检索行的ID
我正在尝试通过使用两个过滤条件来获取一行的ID。使用一个过滤条件时可以正常工作,但一旦我添加第二个过滤条件,就出现问题了。有人能帮我一下吗?(是的,我看过sqlalchemy的教程,但还是遇到了问题)
这是我表格的一部分
class Character(Base):
__tablename__ = 'character'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'))
lock = Column(Boolean)
我在表格中创建了一行空数据,只有user_id被填上了。
现在这一行可以正常工作(使用一个过滤条件)
u_id = 1
x_char = session.query(Character).filter_by(user_id=u_id).first()
y = x_char.id
print y
当我尝试添加第二个过滤条件(这个条件仍然是空的)时,就出错了。我收到以下错误信息:AttributeError: 'Query'对象没有'id'这个属性
x_char = session.query(Character).filter(and_(Character.user_id == u_id, Character.lock == None))
y = x_char.id
print y
请帮我一下,或者给我指个方向
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