SQLAlchemy - 通过用户名加载用户
我刚开始接触pylons,正在努力理解SQLAlchemy的基本知识。我已经弄明白了如何通过ID加载一条记录:
user_q = session.query(model.User)
user = user_q.get(user_id)
但是,我想知道如何通过特定的字段(比如用户名)来查询呢?我想应该有一种简单的方法可以用模型来实现,而不是自己手动构建查询。我觉得这可能和查询对象上的add_column()
函数有关,但我还不太明白怎么用。我试过一些类似的写法,但显然不管用:
user_q = meta.Session.query(model.User).add_column('username'=user_name)
user = user_q.get()
1 个回答
4
我觉得你想要的东西大概是这样的:
user = meta.Session.query(model.User).filter_by(name=user_name).first()
这其实是这个的简写:
user = meta.Session.query(model.User).filter(model.User.name=user_name).first()
如果你把 first()
改成 one()
,那么如果没有找到用户,它会抛出一个异常(也就是会报错,表示你想要的用户不存在)。
我强烈建议你仔细阅读一下 对象关系教程 和 SQL表达式语言教程。