Flask + Pymongo + mongoDB事务操作



本文概要


主要对flask使用mongoDB 4.0事务操作进行记录
本文涉及flask 与 flask_pymongo 的组合使用,以及mongoDB 的事务操作


flask_pymongo的使用


环境准备


mongoDB 
flask 
python 
pymongo 
flask_pymongo 


操作解析


1.flask_pymongo 是对pymongo的一个简单封装
2.首先需要在设置中建立与mongoDB 的数据库的连接
3.其次在flask 中初始化一个对象用于数据库操作

from flask import Flask
from flask_pymongo import Pymongo
from config import Config

app = Flask(__name__)
# 第一种初始化 config, 在config 中设置mongoDB的连接
app.config.from_object(Config)
# 第二种初始化 config
Config.init_app(app)
# 初始化mongoDB对象
mongo = Pymongo(app)


config 文件

class Config:
    USE_RELOADER = True
    MONGO_URI = "mongodb://{username}:{password}@{server}:{port}/{database}".\
            format(username=USERNAME, password=PASSWORD, server=SERVER,\
             port=PORT, database=DATABASE)
             
    @classmethod
    def init_app(cls, app):
        for key in dir(cls):
            if key.isupper():
                app.config[key] = getattr(cls, key)



基础操作

@app.route("/hello")
def hello():
    mongo.db.hello.insert({"hello":"world"})
    data = mongo.db.hello.find({},{"_id":0})
    不能直接将data返回,且需要去除 _id 字段
    return [data]



mongoDB 事务


1.mongoDB 4.0 以上支持事务操作,查看官方文档
2.这种事务是跨集合和跨数据库的,相比以前一条文档的事务要强大很多
3.对于事务的性能影响,暂时无法得知


代码具体实现


1.使用pymongo中自带的session完成事务的操作
2.官网中只有mongo Shell 的操作,没有python 版本的操作
3.在pymongo 中也难以找到该说明
    
 

    # cx 是 mongoClient 对象
    session = mongo.cx.start_session()
    hello_collection = mongo.cx.get_database("helloworld").hello
    # helloworld 是库,world 是 集合
    world_collection = mongo.cx.get_database("helloworld").world
    # 事务开始
    session.start_transaction()
    try:
        hello_collection.insert({"world":1})
        world_collection.insert({"hello":1})
    except:
        # 操作异常,中断事务
        session.abort_transaction()
    else:
        session.commit_transaction()
    finally:
        session.end_session()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Django是一个使用Python编写的开源Web应用框架,而PyMongo是一个Python驱动的MongoDB数据库客户端。可以在Django中使用PyMongo来连接和操作MongoDB数据库。可以使用PyMongo模块或者第三方中间件mongoengine来实现。对于PyMongo的使用方法,可以查看官方文档http://api.mongodb.org/python/current/api/pymongo/connection.html。在Django中使用PyMongo可以进行插入、搜索等操作,比如使用collection.insert()、collection.insert_many()、collection.find_one()、collection.find()等方法。需要注意的是,PyMongo操作的是MongoDB数据库,而不是MySQL数据库,因此连接字符串的部分需要使用MongoDB的连接配置,而不是MySQL的连接配置。123 #### 引用[.reference_title] - *1* *3* [Django+Nginx+MongoDB+Mysql+uWsgi的搭建](https://blog.csdn.net/weixin_29699579/article/details/113255194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [用Django全栈开发(进阶篇)——03. 在Django中花样玩转PyMongo(下)](https://blog.csdn.net/gl891011/article/details/107399273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值