def create(app: Flask): app.logger.info('[DATABASE] Starting MongoDB...') db = MongoEngine() db.init_app(app) app.logger.info('[DATABASE] MongoDB started on "{}" ' '{}.'.format(db.get_db().name, db.get_db().client.address)) return db
def get_mongoDB(): """ this function avoids circular referencing when dealing with MongoEngine, or any other database Import this to any module/file/function using mongo: from db.db import get_mongoDB """ if 'db' not in g: # connect to mongoEngine and load configuration settings from config.py mongo = MongoEngine() dbVersion = current_app.config["MONGODB_SETTINGS"]["db"] mongo.connect(dbVersion, connect=False) # print(vars(g)) # print(dir(mongo)) # save database into flask's "g" variable g.db = mongo.get_db() return g.db
import pymongo from pymongo import MongoClient HOST_NAME = 'localhost' app = Flask(__name__) CORS(app) app.config['MONGODB_SETTINGS'] = {'host': '127.0.0.1', 'db': 'kumi'} kumi_mongo_client = MongoClient('localhost', 27017) kumi_db = kumi_mongo_client.kumi db = MongoEngine() db.init_app(app) try: db.get_db() except pymongo.errors.OperationFailure as e: print(e) sys.exit(-1) from models.course import course_api app.register_blueprint(course_api) app.secret_key = b'\xcc^\x91\xea\x17-\xd0W\x03\xa7\xf8J0\xac8\xc5' # move to different file later # Database def login_required( f ): # call this on any routes that require log in. Todo: make 3 separate versions called Student_Required, Teacher_Required, Admin_Required @wraps(f)
# MongoDB settings app.config['MONGODB_SETTINGS'] = { 'alias': 'registry', 'db': 'registry', 'host': '0.0.0.0', 'port': 27017, 'username': '******', 'password': '******' } # Build db connection with straight mongoengine # mongo = connect('registry', host='mongodb://*****:*****@0.0.0.0:27017/registry', alias='registry-db') mongo = MongoEngine(app) registry = mongo.get_db('registry') members = registry.member # Initialize flask-login login_manager = LoginManager(app) # Define login and registation forms (for flask-login) class LoginForm(form.Form): name = fields.TextField(validators=[validators.DataRequired()]) class RegistrationForm(form.Form): name = fields.TextField(validators=[validators.DataRequired()]) def validate_login(self, field):