gpt4 book ai didi

python - MongoDB 与 Python,用于存储游戏的用户名和密码

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:05 26 4
gpt4 key购买 nike

这是用户登录游戏的部分。该数据库托管在 mlab 上,有一个名为 loginInfo 的文档集合,定义为 mycol

我面临的问题是,当它返回 id 时,我无法检查它是否有效,因为我无法检查 Python 中的任何类型的本地列表。我该如何修复它?

import pymongo

def login():
print('Login\nRegister\nPlay as Guest')
login_input = input('What would you like to do?')
if login_input == 'Login':
username = input('Username:')
username_fromDB = mycol.find({"username": username})
if username_fromDB == username:
password = input('Password:')
password_fromDB = mycol.find({"password": password})
if password == password_fromDB:
print('Login success!\n')
mainMenu()
elif login_input == 'Register':
new_username = input('Username:')
new_password = input('Password:')
tobeaddedtodb = {"username": new_username, "password": new_password}
adding = mycol.insert_one(tobeaddedtodb)
print("Registered!\n")
elif login_input == 'Play as Guest':
mainMenu()

最佳答案

username_fromDB = mycol.find({"username": username})

这是错误的,因为 find() 返回一个游标对象,而不是您期望的用户名。

<小时/>

假设 loginInfo 集合包含唯一的用户名和相应的密码,则无需对数据库进行 2 个 find() 查询。您只需检索用户实体并检查输入提供的密码是否与数据库中存储的密码匹配。

由于用户名是唯一的,因此您应该使用 find_one() 而不是 find()。如果成功找到用户,它将返回 dict,否则您将得到 None

尝试这样的事情:

import pymongo

def login():
print('Login\nRegister\nPlay as Guest')
login_input = input('What would you like to do?')

if login_input == 'Login':
username_inp = input('Username:')
pwd_inp = input('Password:')

user_found = mycol.find_one({"username": username_inp}) # query by specified username
if user_found: # user exists
if pwd_inp == user_found['password']:
print('Login success!\n')
mainMenu()
else:
print('Wrong password')
else:
print('User not found')
elif login_input == 'Register':
new_username = input('Username:')
new_password = input('Password:')
tobeaddedtodb = {"username": new_username, "password": new_password}
adding = mycol.insert_one(tobeaddedtodb)
print("Registered!\n")
elif login_input == 'Play as Guest':
mainMenu()

关于python - MongoDB 与 Python,用于存储游戏的用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52930321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com