0

I'm a beginner at python. I'm trying to connect to Mongo DB server from my python flask application. But I couldn't able to run the application as I'm facing the below problem.

from flask import Flask, render_template
from flask_pymongo import PyMongo
from pymongo import MongoClient # Database connector

app=Flask(__name__)

app.config["MONGO_DBNAME"]="connect_to_pymon"
app.config["MONGO_URI"]="mongodb://mongo_test:mongo_test@123@ds129821.mlab.com:29821/connect_to_pymon"
mongo = PyMongo(app)

@app.route("/add")
def add():

    user = mongo.db.users
    user.insert[{"name":"kishor"}]
    return "users added!"

if __name__=='__main__':
    app.run(debug=True, port=8080)

This is my source code. When I execute this I'm getting the following error which I couldn't able to trace it.

Traceback (most recent call last):
  File "C:/Users/kravi/PycharmProjects/GitUploadTest/mongoTest.py", line 9, in <module>
    mongo = PyMongo(app)
  File "C:\Kishor\Training\My_Workspace\Python_Basics\TaskCRUD\venv\lib\site-packages\flask_pymongo\__init__.py", line 116, in __init__
    self.init_app(app, uri, *args, **kwargs)
  File "C:\Kishor\Training\My_Workspace\Python_Basics\TaskCRUD\venv\lib\site-packages\flask_pymongo\__init__.py", line 149, in init_app
    parsed_uri = uri_parser.parse_uri(uri)
  File "C:\Kishor\Training\My_Workspace\Python_Basics\TaskCRUD\venv\lib\site-packages\pymongo\uri_parser.py", line 379, in parse_uri
    user, passwd = parse_userinfo(userinfo)
  File "C:\Kishor\Training\My_Workspace\Python_Basics\TaskCRUD\venv\lib\site-packages\pymongo\uri_parser.py", line 97, in parse_userinfo
    "RFC 3986, use %s()." % quote_fn)
pymongo.errors.InvalidURI: Username and password must be escaped according to RFC 3986, use urllib.parse.quote_plus().

Process finished with exit code 1

Note: I haven't installed mongoDb in my PC. I'm using mongo db as a service

Kishor kumar R
  • 195
  • 2
  • 17

2 Answers2

1

you can connect to your db using PyMongo as follows:

from pymongo import MongoClient

client = MongoClient("mongodb://mongo_test:mongo_test@123@ds129821.mlab.com:29821/connect_to_pymon")

db = client["dbname"] # connect_to_pymon in your case
Prajval M
  • 2,298
  • 11
  • 32
-1

I understood that using special characters like "@" in passwords doesn't make sense as we have to configure mongo URI which has a specific format with symbol @ in it. I changed the database password and tried, after which it worked.!

Kishor kumar R
  • 195
  • 2
  • 17