在MongoDB和PyMongo中创建/使用集合时遇到问题。不知道我做错了什么

2024-06-25 22:57:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个小脚本,允许用户使用Pymongo和MongoDB登录和注册。我试图使用“Pinnacle”数据库并使用/创建一个名为“Users”的集合,但我似乎遇到了问题。当我跑的时候 use pinnacle 在mongodb shell中,它输出switched to db pinnacle。然后我就跑 db.collection_names它只是说pinnacle.collection_names。这让我相信,在创建或使用集合时,我的代码中出现了某种错误。这是我的密码:

from pymongo import MongoClient
import sys
import os
import time
from passlib.hash import sha256_crypt
import pprint

client = MongoClient()


def login():
    loginUsername = input('Please input username to be signed in.')
    loginPassword = input('Please input password to be signed in.')


def registerAccount():
    registerUsername = input('Please input a username to be registered into our database.')
    registerPassword = input('Please input a password to be entered into our database.')
    passwordHash = sha256_crypt.hash(registerPassword)

    regDetails = {
        "username": registerUsername,
        "password": registerPassword,
        "passwordhash": passwordHash
    }

    db = client.pinnacle
    users = db.users
    users.insert(regDetails)
    # db.users.insert(regDetails)
    for a in db.users.find():
        pprint.pprint(a)


def checkRegistered():
    print('Coming soon')


def quit():
    os.system('clear')
    print('Closing...')
    time.sleep(3)
    sys.exit()


def menu():
    print('''
    1. Login
    2. Register new user
    3. Check number of people registered in the database
    4. Quit

    Select an option.
            ''')
    options = {'1': login, '2': registerAccount, '3': checkRegistered, '4': quit}
    options[input()]()


while True:
    menu()

谢谢你的帮助


Tags: toinimportinputdbdefusernamepassword
1条回答
网友
1楼 · 发布于 2024-06-25 22:57:11

在shell中,您可以使用以下命令列出当前数据库中的集合:

db.getCollectionNames()

不是db.collection_names

在Python中,执行以下操作:

db.collection_names()

注意括号:这是一个函数调用,不是属性

相关问题 更多 >