"Django ORM和Flask-Sqlalchemy在使用filter时有什么区别?"

2024-10-04 01:30:46 发布

您现在位置:Python中文网/ 问答频道 /正文

世界各地的朋友们,有一个问题困扰了我好几天,当我使用Django时,我使用obj=User.objects.filter(uname=username,pwd=password)用户是一个迁移到MySQL的类,但是当我使用Flask Sqlalchemyobj = User.query.filter(User.uname == username, User.pwd == password).first()时,我需要这样做来实现登录。我觉得Django和Flask有些不同。我知道“=”是赋值运算符,“==”是关系运算符。谢谢你能帮我,谢谢!在


Tags: django用户objflaskobjectspwdmysqlusername
1条回答
网友
1楼 · 发布于 2024-10-04 01:30:46

首先,并不是Flask或{}做这种事情!

Flask一起使用的是SQL-Alchemy,与Django一起使用的是Django ORM,您可以在没有FlaskDjango项目的情况下独立使用它们!

在这两个代码段中,都是将一个对象赋给一个变量!

obj = User.objects.filter(uname=username,pwd=password)

等于MySQL查询

^{pr2}$

同时

obj = User.query.filter(User.uname == username, User.pwd == password).first()

等于MySQL查询

SELECT * 
FROM users 
WHERE uname = <username> AND pwd = <password> 
LIMIT BY 1;

所以Django ORM一个将返回满足我们条件的iterable行!

您可以在SQL-Alchemy上使用all()而不是first(),并得到与Django ORM相同的结果!

SQL-Alchemy上有一个名为filter_by()的方法,它看起来更像您的Django ORM示例,如果您在结尾使用first(),它仍然只得到一个或404,但是您可以不使用条件运算符而通过在方法参数上分配它们来设置条件,例如:

obj = User.query.filter_by(uname=username, pwd=password).first()

有关^{cd4>}上的filterfilter_by的更多信息,请查看StackOverflow Question

相关问题 更多 >