同时将Flask与MySQL和MongoDB连接



我有一个Flask后端,同时我正在尝试将MySQL连接到MongoDb。然而,我一直在经历这个错误。我也在使用数据库文件中实例化的sqlalchemy。对MySQL服务器的请求很好,但对mongodb的get请求返回以下错误:

MongoDB目前托管在EC2上,而我的flask应用程序是本地的。

pymongo.errors.ServerSelectionTimeoutError:

app.py:

from flask import Flask
from flask_restful import Api
from db import db
from books.resource import Review, ReviewList
from flask_mongoengine import MongoEngine
import setting.mongo_setup as mongo_setup
app = Flask(__name__)
# mongo_setup.global_init()
# app.config.from_pyfile('setting/mongo_setting.py')
app.config['MONGODB_SETTINGS'] = {
'db': 'meta',
'host': 'XXXXXXXX',
'port': XXX
}
app.config.from_pyfile('setting/sql_setting.py')
mongo_db = MongoEngine()
mongo_db.init_app(app)
db.init_app(app)
api = Api(app)
api.add_resource(Review, '/review/')
if __name__ == '__main__':
app.run(port=5000, debug=True)

sql_setting.py:

import os
MYSQL_HOST = 'XXXXXXX'
MYSQL_PORT = XXXXX
DBNAME = "XXXXX"
MYSQL_USERNAME = "XXXXXX"
MYSQL_PASSWORD = "XXXXXX"
MYSQL_URI = "mysql+pymysql://%s:%s@%s:3306/%s" % (MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_HOST, DBNAME)
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = MYSQL_URI```

您可以telnet到mongo主机吗

telnet x.x.x.x 27017

(其中x.x.x.x是mongo ip地址(

图像中的错误通常发生在连接问题/端口/连接未列入白名单/防火墙或安全组中不允许时

a(

app.config['MONGODB_SETTINGS'] = {
#__snip__
'connect': 'direct',
}

可能会起作用

b( 您应该从代码和错误图像中省略mongoIP地址。

最新更新