【问题标题】:Check if username already exists in database (Python + Pymongo)检查数据库中是否已存在用户名(Python + Pymongo)
【发布时间】:2019-06-19 12:53:47
【问题描述】:

我正在尝试制作一个注册模块以在更大的登录/身份验证程序中使用,我需要制作一个可以检查用户名是否已存在于集合中的函数。

我没有尝试过更多,这是我的第一个真正的编程项目,我被困在这部分。我意识到我可以使用在线字典数据库,但我想学习如何将 3rd 方数据库与我的编程集成。 从 pymongo 导入 MongoClient 进口时间

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) 中的任何内容,则打印“用户名可用”。如果查询中的任何内容与输入匹配,则打印“请重试”,但是,它接受输入的所有内容并退出代码。

【问题讨论】:

    标签: python python-3.x mongodb mongodb-query pymongo


    【解决方案1】:

    我想通了,我将字典放在文档中的字典中,而不是迭代“allList”。

    【讨论】:

      【解决方案2】:

      您正在使用find_one() 在用户名中查找一个条目,然后检查unameInput 是否等于它。如果不是完全匹配,它将执行 name 可用的代码。 请尝试使用 find(),因为这将遍历集合中的所有文档。

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

      【讨论】:

      • 这是输出:文件“C:/Users/ROOT/Desktop/python/test.py”,第 16 行,在 unameQuery2 = userCol.all() 文件“C:\ Users\ROOT\Desktop\python\venv\lib\site-packages\pymongo\collection.py",第 3321 行,在 call self.__name.split(".")[-1]) TypeError:“集合”对象不可调用。如果您打算在 'Collection' 对象上调用 'all' 方法,它会失败,因为不存在这样的方法。`
      • 我认为我不能将“all”用作 pymongo 查询
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2012-01-26
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多