Проверьте, существует ли имя пользователя в базе данных (Python + Pymongo) - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь создать модуль регистрации для использования в более крупной программе входа в систему / аутентификации, и мне нужно создать функцию, которая может проверять, существует ли имя пользователя в коллекции.

У меня нетперепробовал гораздо больше, это мой первый настоящий программный проект, и я застрял в этой части.Я понимаю, что могу использовать встроенные словарные базы данных, но я хочу научиться интегрировать сторонние базы данных с моим программированием.из pymongo import MongoClient import time

client = MongoClient('localhost', 27017)
loginDB = client["loginDB"]
userCol = loginDB["userCol"]

##Username##
print('Choose A Unique Username')
time.sleep(1.2)
unameInput = input("Enter Username: ")
unameList = {'Username': unameInput}
unameQuery = {}
unameQuery2 = userCol.find_one({'Username.Username': {'$gt': 'a'}})

if unameInput != unameQuery2:
    print('Name is Available | Accepted!')
    allList = {'Username': unameList}
    userCol.insert_one(allList)
else:
    print('Sorry, Please Try Again.')`

Ожидаемый результат - поиск в базе данных всего, что начинается с буквы «a», вперед.Если входные данные (unameInput) не равны чему-либо в результате запроса (unameQuery2), выведите «Имя пользователя доступно».Если что-либо в запросе соответствует вводу, выведите «Пожалуйста, попробуйте еще раз», однако оно принимает все, что введено, и выходит из кода.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Я понял это, я помещал словари в словари внутри документов, а не итерировал "allList".

0 голосов
/ 25 января 2019

Вы используете find_one(), чтобы найти одну запись в имени пользователя, а затем проверяете, равно ли unameInput ей.Если это не точное совпадение, он выполнит код для имени доступно.Вместо этого попробуйте найти (), так как это будет повторять все документы в коллекции.

unameQuery2 = userCol.find() 
if unameInput not in unameQuery2: 
    # do something
...