SQLalchemy通过过滤器检索行的id

时间:2013-03-05 16:37:32

标签: python sqlalchemy

我试图通过使用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

请帮助我或指出正确的方向

1 个答案:

答案 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