SQLAlchemy - 通过用户名加载用户

4 投票
1 回答
3361 浏览
提问于 2025-04-16 10:02

我刚开始接触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表达式语言教程

撰写回答