Flask-中-MongoDB-的使用

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


1. Flask 应用的外部脚本:Flask-Script

Flask-Script 是一个可以在 flask 应用外部编写脚本的扩展。它有一些常用的功能如下:

  • 运行一个开发的服务器
  • Python shell 中操作数据库
  • 命令行任务

首先,我们需要安装 Flask-Script,在Linux系统下,我们可以通过 pip install flask-script 命令行来安装。

我们还是先来看一下,我们目录下面的文件:

192:test ming$ tree
.
├── app.py
├── static
└── templates

2 directories, 1 file

之后,我们来创建一个文件用来存放我们的 web 脚本,一般我们将它命名为 manage.py。然后在里面编写一个 hello world 的脚本,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask_script import Manager
from app import app

# 实例化
manager = Manager(app)

# 修饰器
@manager.command
def hello():
    print 'hello world'

if __name__ =="__main__":
    manager.run()

然后再终端中运行这个脚本 python manage.py hello ,结果如下

192:test ming$ python manage.py hello
hello world

我们在运行命令中,也是可以从终端传入一些参数的,我们修改一下代码,实现参数的传入,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask_script import Manager
from app import app

# 实例化
manager = Manager(app)

# 修饰器
@manager.command
def hello():
    print 'hello world'

@manager.option('-m', '--msg', dest='msg_val', default='world')
def hello_world(msg_val):
    print 'hello ' + msg_val

if __name__ =="__main__":
    manager.run()

现在,我们来运行一下这个程序。首先,我们不传入任何的参数来运行这个程序,运行结果如下:

192:test ming$ python manage.py hello_world
hello world

之后,我们从终端中传入参数 ming ,使其能打印 hello ming,运行结果如下:

192:test ming$ python manage.py hello_world -m ming
hello ming

其实,细心的你肯定发现了,我们的运行脚本是

python manage.py <方法名>

至此,我们已经学会了如何简单的去操作 Flask 应用的外部脚本。

2. MongoDB 的使用

如果你对 MongoDB 还不了解,那么可以先查看这篇博客,做一个入门学习。

python 与 MongoDB 之间的交互有很多种的方法,在这里我们选择 pymongo 来进行连接。

首先,我们来查看一下,我们创建的文件,如下:

192:test ming$ tree
.
├── app.py
├── manage.py
├── models.py
├── static
└── templates

2 directories, 3 files

我们开始编写文件,先来编写 models.py 中的模型代码,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pymongo

# 返回一个 collection
def get_coll():

    client = pymongo.MongoClient('127.0.0.1', 27017)
    db = client.test
    user = db.user_collection

    return user


class User(object):

    def __init__(self, name, email):
        self.name = name
        self.email = email

    def save(self):
        user = {"name": self.name, "email": self.email}
        coll = get_coll()
        id = coll.insert(user)
        print id

    @staticmethod
    def query_users():
        users = get_coll().find()
        return users 

之后,编写编写脚本文件,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask_script import Manager
from app import app
from models import User

# 实例化
manager = Manager(app)

# 修饰器
@manager.command
def save():
    user = User('ming', 'ming@hehe.com')
    user.save()

@manager.command
def query_users():
    users = User.query_users()
    for user in users:
        print user


if __name__ =="__main__":
    manager.run()

接下来,我们可以查看一下我们的程序,首先是保存脚本,结果如下:

192:test ming$ python manage.py save
58234f769f5a725d8dda373e

返回了一个 ID ,说明保存成功了。接下来,我们运行一下查询脚本,查询结果如下:

192:test ming$ python manage.py query_users
{u'_id': ObjectId('58234f769f5a725d8dda373e'), u'name': u'ming', u'email': u'ming@hehe.com'}

接下来,我们来学习 MongoDB 中的ORM。MongoDB 的 ORM 有很多种,在本博客中我们 MongoEngine 来实现。

首先,我们需要修改 app.py 程序,将 MongoEngine 导入程序中,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask 
from flask.ext.mongoengine import MongoEngine 

app = Flask(__name__)

# test 是链接的数据库
app.config['MONGODB_SETTINGS'] = {'db': 'test'}

# 实例化
db = MongoEngine(app)

@app.route('/')
def index():
    return 'Hello World!'


if __name__ == "__main__":
    app.run()

之后,我们修改 models.py 程序,添加两个字段 nameemail。如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from app import db

# 类名定义 collection
class User(db.Document):
    # 字段
    name = db.StringField()
    email = db.StringField()

    def __str__(self):
        return "name:{} - email:{}".format(self.name, self.email)

最后,我们修改脚本文件 manage.py ,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask_script import Manager
from app import app
from models import User

# 实例化
manager = Manager(app)

# 修饰器
@manager.command
def save():
    user = User(name = 'ming02', email = 'ming02@hehe.com')
    user.save()

@manager.command
def query_users():
    users = User.objects.all()
    for user in users:
        print user


if __name__ =="__main__":
    manager.run()

现在,你可以运行 python manage.py savepython manage.py query_users 命令来测试程序了。

### 回答1: 可以使用Flask-APScheduler在MongoDB实现定时任务,只需要在Flask应用定义一个定时任务,并将其配置为在MongoDB运行。具体代码如下:from flask_apscheduler import APSchedulerscheduler = APScheduler()# Configure the scheduler to use MongoDB as its job store scheduler.add_jobstore('mongodb', host='localhost', database='your_database_name')@scheduler.task('interval', id='do_job_1', seconds=30) def job_1(): print("Job 1 executed")@scheduler.task('cron', id='do_job_2', day_of_week='mon-sun', hour='12', minute='30') def job_2(): print("Job 2 executed")# Start the scheduler scheduler.start() ### 回答2: 要使用Flask-APScheduler实现数据库MongoDB定时任务,首先需要安装Flask-APScheduler和pymongo库。在Flask应用程序,可以使用以下代码实现: 1. 首先,在app.py文件导入所需的模块和库: ```python from flask import Flask from flask_apscheduler import APScheduler from pymongo import MongoClient ``` 2. 创建Flask应用程序实例: ```python app = Flask(__name__) ``` 3. 配置MongoDB连接并创建MongoDB客户端: ```python app.config['MONGO_URI'] = 'mongodb://localhost:27017/db_name' mongo_client = MongoClient(app.config['MONGO_URI']) ``` 请注意,`db_name`应替换为你的实际数据库名称,`localhost:27017`应替换为你的MongoDB服务器地址和端口。 4. 初始化APScheduler实例并配置任务存储: ```python scheduler = APScheduler() scheduler.init_app(app) scheduler.start() ``` 5. 创建一个定时任务函数,该函数将执行需要定时执行的操作。这里以向MongoDB数据库插入一条记录为例: ```python def insert_data(): db = mongo_client.db_name collection = db.collection_name data = {'name': 'John', 'age': 30} collection.insert_one(data) ``` 请注意,`db_name`和`collection_name`应替换为你的实际数据库和集合名称。 6. 创建一个定时任务,并将其添加到APScheduler: ```python scheduler.add_job(func=insert_data, trigger='interval', seconds=60) ``` 这将每隔60秒执行一次`insert_data`函数。 7. 最后,在Flask应用程序的入口处,启动Flask应用程序: ```python if __name__ == '__main__': app.run() ``` 以上代码片段演示了如何使用Flask-APScheduler和pymongo库实现数据库MongoDB定时任务的基本步骤。根据实际需求,你可以根据需要调整设置和任务函数。 ### 回答3: 要使用Flask-APScheduler实现MongoDB数据库的定时任务,需要先安装FlaskFlask-APScheduler库,并且确保MongoDB数据库已经正确安装和配置。 首先,在Flask应用导入所需要的库和模块: ```python from flask import Flask from flask_apscheduler import APScheduler from pymongo import MongoClient ``` 然后,创建Flask应用和APScheduler实例并配置MongoDB数据库的连接: ```python app = Flask(__name__) scheduler = APScheduler() scheduler.init_app(app) # 配置MongoDB数据库连接 client = MongoClient('mongodb://localhost:27017/') # 替换为实际的MongoDB连接地址 db = client['mydatabase'] # 替换为实际的数据库名称 ``` 接下来,创建一个定时任务函数,该函数在特定时间间隔内会被调度执行,并且可以在函数访问MongoDB数据库: ```python @scheduler.task('interval', id='my_job', minutes=30) def my_task(): collection = db['mycollection'] # 替换为实际的集合名称 # 在此处添加需要执行的MongoDB操作,例如插入、更新、删除等 # 例如:collection.insert_one({"name": "example"}) ``` 最后,启动定时任务调度器和Flask应用: ```python @app.route('/') def index(): return 'Flask-APScheduler MongoDB Demo' if __name__ == '__main__': scheduler.start() app.run() ``` 启动应用后,定时任务会按照预定的时间间隔执行,并且可以在`my_task()`函数进行MongoDB的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值