我试图通过使用2个过滤器来获取行的id。 我通过使用1个过滤器来实现它,但是只要我添加第二个,就会出错。有人可以帮忙(是的,我已经阅读了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
当我尝试添加第二个过滤器(仍然保持为空)时,它会出错。 我收到以下错误:AttributeError:'Query'对象没有属性'id'
x_char = session.query(Character).filter(and_(Character.user_id == u_id, Character.lock == None))
y = x_char.id
print y
请帮助我或指出正确的方向
答案 0 :(得分: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