ramki
ramki

Reputation: 92

How to use multiple Mongodb in flask

I have two mysql database one is localhost and another is in server now, am going to create simple app in python using flask for that application i would like to connect the both mysql DB (local and server).

Any one please suggest how to connect multiple DB into flask.

app = Flask(__name__)
client = MongoClient()
client = MongoClient('localhost', 27017)
db = client.sampleDB1

Sample code if possible.

Thanks

Upvotes: 3

Views: 3869

Answers (3)

Fallak Asad
Fallak Asad

Reputation: 368

#This technique can be used to connect to multiple databases or database servers:
app = Flask(__name__)

# connect to MongoDB with the defaults
mongo1 = PyMongo(app)

# connect to another MongoDB database on the same host
app.config['MONGO2_DBNAME'] = 'dbname_two'
mongo2 = PyMongo(app, config_prefix='MONGO2')

# connect to another MongoDB server altogether
app.config['MONGO3_HOST'] = 'another.host.example.com'
app.config['MONGO3_PORT'] = 27017
app.config['MONGO3_DBNAME'] = 'dbname_three'
mongo3 = PyMongo(app, config_prefix='MONGO3')

Upvotes: 0

Heather Claxton
Heather Claxton

Reputation: 1109

I had the same issue, finally figured it out.

Instead of using

client = MongoClient()
client = MongoClient('localhost', 27017)
db = client.sampleDB1

Delete all that and try this:

mongo1 = PyMongo(app, uri = 'mongodb://localhost:27017/Database1')
mongo2 = PyMongo(app, uri = 'mongodb://localhost:27017/Database2')

Then, when you want to call a particular database you can use:

@app.route('/routenamedb1', methods=['GET'])
def get_data_from_Database1():

Database1 = mongo1.db.CollectionName ##Notice I use mongo1,
#If I wanted to access database2 I would use mongo2

#Walk through the Database for DC to
for s in Database1.find():
#Modifying code
return data

Upvotes: 5

michal
michal

Reputation: 327

create model.py and separate instances of 2 databases inside it, then in app.py:

app = Flask(__name__)
app.config['MODEL'] = model.my1st_database()
app.config['MODEL2'] = model.my2nd_database()

works for me :)

Upvotes: 0

Related Questions