Прежде всего, это не Flask
или Django
, который делает такую вещь!
Тот, который вы использовали с Flask
, это SQL-Alchemy
, а тот, который вы использовали с DjangoDjango ORM
, Вы можете использовать их автономно без Flask
или Django
Project!
В обоих фрагментах Вы назначаете объект переменной!
obj = User.objects.filter(uname=username,pwd=password)
равнов запрос MySQL
SELECT *
FROM users
WHERE uname = <username> AND pwd = <password>;
, в то время как
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
возвратит итерируемые строки, которые встретилисьнаше условие!
Вы можете использовать all()
вместо first()
на SQL-Alchemy
и получить такой же результат, как Django ORM
!
Существует метод с именем filter_by()
on SQL-Alchemy
, который больше похож на ваш Django ORM
пример. Он по-прежнему получает только один или 404, если вы используете first()
в конце, но вы можете установить условие без операторов условия, но присваивая их параметрам метода, например:
obj = User.query.filter_by(uname=username, pwd=password).first()
Проверьте это StackOverflow Вопрос для получения дополнительной информации о filter
против filter_by
на SQL-Alchemy