Я только начал учиться программировать пару дней назад, и я решил создать программу регистрации / аутентификации на Python, используя внешнюю базу данных для моего первого проекта. Я использую MongoDB с Pymongo для хранения информации, которая была введена во время процесса, в одном, случайно сгенерированном _id.
Вот проблемная область:
##Username##
print('Choose A Unique Username')
time.sleep(1.2)
unameInput = input("Enter Username: ")
unameList = {'Username': unameInput}
unameQuery = {'Username': 'k'}
unameQuery2 = userCol.find_one(unameQuery)
if unameInput == unameQuery2:
print('Name is Available | Accepted!')
else:
print('Sorry, Please Try Again.'
Кажется, я не могу найти способ выполнить запрос для поиска по всей коллекции (userCol), используя определенный ключ в списках моего словаря.
Я только попробовал варианты метода, который использовал, и он никогда не возвращает ошибок, но он переходит к другому: утверждение
from pymongo import MongoClient
import time
import sys
import getpass
import json
client = MongoClient('localhost', 27017)
loginDB = client["loginDB"]
userCol = loginDB["userCol"]
##Write to DBs##
print('New User Form')
time.sleep(1.2)
fnameInput = input("First Name: ")
lnameInput = input("Last Name: ")
namesList = {'First Name:': fnameInput, 'Last Name:': lnameInput}
("Thank you, " + fnameInput + lnameInput)
if fnameInput != lnameInput:
print('Name Accepted')
else:
print('Sorry, Please Try Again.')
##Email##
print("Email Validation")
time.sleep(1.2)
emailInput = input("Email Address: ")
time.sleep(1)
retypeEmail = input("Confirm Email: ")
time.sleep(1)
print("Is " + retypeEmail + " correct?")
confirmEmail = input("Yes/No: ")
emailList = {'Email': retypeEmail}
if confirmEmail == "Yes" and emailInput == retypeEmail:
print("Verifying Email...")
time.sleep(1)
print("Verifying Email.....")
time.sleep(1.55)
print(emailInput + ' Verified!')
else:
print('Please re-enter your Email...')
time.sleep(1.5)
time.sleep(1)
##Username##
print('Choose A Unique Username')
time.sleep(1.2)
unameInput = input("Enter Username: ")
unameList = {'Username': unameInput}
unameQuery = {'Username': 'k'}
unameQuery2 = userCol.find_one(unameQuery)
if unameInput == unameQuery2:
print('Name is Available | Accepted!')
else:
print('Sorry, Please Try Again.')
print('Choose A Password')
time.sleep(1.2)
pswInput = input("Enter Password: ")
pswVerify = input("Verify Your Password: ")
pswList = {'Username': pswVerify}
allList = {'Name': namesList, 'Email': emailList, 'Username': unameList, 'Password': pswList}
if pswInput == pswVerify:
print('Passwords Match | Accepted!')
time.sleep(1)
else:
print('Sorry, Please Try Again.')
print('Are you sure you want to create this account, ' + fnameInput + '?')
createAccount = input('Y/N')
if createAccount == 'Y' or 'y' or 'yes' or 'Yes':
print('Creating Account, Please Wait...')
time.sleep(.5)
print('Writing Info To Database...')
time.sleep(1.6)
userCol.insert_one(allList)
print('Account Created, Thank You!')
Я хочу, чтобы результат функции ## Username ## проверил коллекцию в MongoDB, чтобы увидеть, есть ли имя пользователя, которое уже было создано. Если имя пользователя уже создано, снова запустите функцию в ## Usernmae ##. Если этого не произошло, примите ввод и запустите функцию пароля.
Я также понимаю, что у меня нет никаких петель на месте, перезапустите функцию. Я запускал его несколько раз без них, и, похоже, это не должно мешать выполнению запроса, к счастью