mongodb 属性错误:“NoneType”对象没有属性“users”

o2rvlv0m  于 2023-03-22  发布在  Go
关注(0)|答案(1)|浏览(247)

我正在开发一个Flask应用程序,它使用REST API在MongoDB数据库上为用户资源执行CRUD(创建、读取、更新、删除)操作。
下面是我将数据插入MongoDB的代码

from flask import Flask
from flask_pymongo import PyMongo 

app = Flask(__name__)
mongodb_client = PyMongo(app, uri="mongodb+srv://xyzzzz:xyzzzz@cluster0.iq7ljbn.mongodb.net/?retryWrites=true&w=majority")
db = mongodb_client.db

@app.route('/')
def index():
    user_collection = db.users
    user_collection.insert({'name' : 'Cristina'})
    return '<h1>Added a User!</h1>'

if __name__ == "__main__":
    app.run(debug = True)

但是,当我运行它时,我得到了以下错误

^C(venv) (base) Sparshs-MacBook-Pro:server sparshbohra$ flask run
 * Serving Flask app 'app.py'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
[2023-03-20 19:54:25,150] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "/Users/sparshbohra/corider/venv/lib/python3.11/site-packages/flask/app.py", line 2528, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sparshbohra/corider/venv/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sparshbohra/corider/venv/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sparshbohra/corider/venv/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sparshbohra/corider/server/app.py", line 11, in index
    user_collection = db.users
                      ^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'users'
127.0.0.1 - - [20/Mar/2023 19:54:25] "GET / HTTP/1.1" 500 -

使用pymongo连接flask和mongo时似乎出现了问题。我之前也尝试过手动创建一个集合来插入我的数据,但遇到了类似的NoneType对象错误。应该怎么做?
PS:我在连接字符串中使用了一个假的用户和密码,目的是在线询问。

vnzz0bqm

vnzz0bqm1#

根据文档:
以前的Flask-PyMongo版本要求MongoDB URI包含数据库名称;从2.2开始,这个要求被取消了。2如果没有数据库名,db属性将是None。
因此,基本上,您在URI中缺少了数据库名称

相关问题