如何在Flask中使用MongoDB?

时间:2017-01-06 21:47:12

标签: python mongodb flask

好的,所以我安装了Flask,我想知道如何连接并使用我即将开始构建的Flask应用程序使用MongoDB数据库。

7 个答案:

答案 0 :(得分:9)

您可以使用这三个库中的任何一个

我个人使用烧瓶mongoengine,一切正常

答案 1 :(得分:6)

我个人觉得PyMongo库简单易用。

首先需要导入collections.Counter并创建连接:

MongoClient

然后获取您的数据库实例和集合(表):

from pymongo import MongoClient
client = MongoClient()

然后,您可以通过使用保存数据的JSON文档来处理数据。他们的网站上有一个完整的例子。

查看有关如何使用PyMongo的this教程。

答案 2 :(得分:3)

也许您不必使用Flask的特殊库来连接MongoDB。

将Flask应用程序视为普通的Python程序,并通过普通的Python库(如PyMongo)连接到MongoDB。

Here是其他人的榜样。通过PyMongo连接到MongoDB的Flask应用程序。

答案 3 :(得分:2)

这是带有Flask的MongoDB的简单示例

  import pymongo
  import json
  client = pymongo.MongoClient("localhost", 27017)
  collection_USER = client[simple]
  Define_Collection_for_USER_FILE = collection_USER['USER']
  Define_Collection_for_USER_FILE.remove({})
  Define_Collection_for_USER_FILE.insert(json.loads(filename))

答案 4 :(得分:2)

将MongoDB与Flask结合使用有多种方法-Flask_pymongo和flask_mongoengine是两个python模块,可用于轻松与mongoDB集成。两者都使用pymongo作为基础库,因此在使用任何模块(flask_pymongo和flask_mongoengine)时,可以轻松继承pymongo可用的nd类方法。我发现使用mongoengine创建模型更加容易。我正在使用flask_mongoengine提供解决方案。

使用python 3.6 +和flask 1.1.1 + (也通过Python 3.7+进行了测试)

使用flask_mongoengine

configuration-file.cfg

MONGODB_SETTINGS = {
    'DB': 'Your_DB_Name',
    'host': 'localhost',
    'port': 27017,
}

App.py文件

app.config['SECRET_KEY'] = SECRET_KEY
db = MongoEngine()

app.config.from_pyfile('settings.cfg')

with app.app_context():
   db.init_app(app)
   try:
       db_client = db.connection['flask_webapp_db']
   except ConnectionFailure as e:
       sys.stderr.write("Could not connect to MongoDB: %s" % e)
       sys.exit(1)

........
@app.route('/')
def signup():
signup_form = get_signup_form(User)
if signup_form.validate_on_submit():
    try:
        user = db_client.User
        user.save(signup_form.data)
        print('user registered')
        return redirect('/')
    except WriteError as WE:
        print(WE)
return render_template('signup.html', form=signup_form)

在models文件中创建用户模型,该文件应如下所示-该文件定义了表( 在Mongodb中称为Document

models.py

from mongoengine.document import Document
from mongoengine.fields import DateTimeField, StringField, EmailField


class User(Document):
    username = StringField(min_length=4, required=True, unique=True)
    password = StringField(min_length=8, required=True)

    meta = {'db_alias': 'flask_webapp_db'}    # your db name where you want to create the table(Dcoument) User is your Document(Table) name
    def save(self, force_insert=False, validate=True, clean=True,
         write_concern=None, cascade=None, cascade_kwargs=None,
         _refs=None, save_condition=None, signal_kwargs=None, **kwargs):
        pass

答案 5 :(得分:0)

我正在使用Flask-Pymongo:

from pymongo import MongoClient

app = Flask(__name__)


app.config['MONGO_DBNAME'] = 'reports' # name of database on mongo
app.config["MONGO_URI"] = "mongodb://127.0.0.1:27017/reports"
mongo = PyMongo(app)

正在工作!

答案 6 :(得分:0)

您必须遵循几个步骤。由于flask是一个较轻的框架,因此您将需要安装不同的软件包以根据需要使用。

因此,由于您将使用Mongodb在您的项目中工作,因此必须安装Pymongo

pip install Pymongo

之后,您将需要在MongoDB中设置数据库:

  • 因此,在Mongodb中创建一个数据库,然后在其中创建数据库之后,创建一个集合或直接从您的函数中添加它。

数据库名称:MyDaTaBaSe

完成后,设置您的工作环境:

import os
from flask import Flask, render_template, redirect, request, url_for, session
from flask_pymongo import PyMongo #<<< THIS IS THE GUY YOU WILL NEED TO CONNECT WITH Mongodb



app = Flask(__name__)

#App configuration -- table name and the link
app.secret_key = 'any random string'
app.config['MONG_DBNAME'] = 'MyDaTaBaSe'
app.config['MONGO_URI'] = 'mongodb+srv://<YOUR_USERNAME_HERE>:<YOUR_PASSWORD_HERE>@myfirstcluster-uyvei.mongodb.net/MyDaTaBaSe?retryWrites=true'


mongo = PyMongo(app)

@app.route(/)
def index():
    return render_template('index.hml')

因此,主要角色是app.config['MONG_DBNAME'] = 'MyDaTaBaSe',您将需要告诉您要使用哪个数据库,以及app.config['MONGO_URI'],您将需要在其中建立连接和链接最后放置用户名和密码以及数据库名称。

因此,这是与Mongodb连接的基础。