python flask实现对mongodb数据库的CURD

4 篇文章 0 订阅
1 篇文章 0 订阅

首先关于flask框架,我之前没有用过python的web框架,只是知道有django和flask两种框架,由于之前学过java的spring框架,知道有个MVC这么个东西,然后对于flask就有点束手无策,文件可以随便建立,需要遵循什么结构或者方针吗?百度之后得到了下面这段话这么个结论:

Django框架的强大就肯定意味着它是一款重量级框架,而对于初学者来说,这可能是一种灾难。如果初学者没有其他语言的基础,没有后端开发的经验,那么这种方式可能直接就导致放弃。

  Pythonweb的入门,使用web.py是非常好的选择。不管是Django还是Flask,他们设计的基础都是web.py。不同的是Django设计的更复杂,更像是一间做好硬装的房子,你只需要稍微做一下软装,布置一下家具就能把整个房间设计的很漂亮。

  Flask就不太一样了,它仅仅帮你做好了建房子所需要的材料,房子如何搭建,如何装修全都得靠你自己动手,所以同一个项目,使用Flask来做,不同的人可能设计出来的架构完全不同,而使用Django框架做出来的架构可能都差不多了。

  对于用过MVC框架的开发者来说,上手Django是很快的,因为Django也是MVC模式。Flask就没有什么模式可言了,仅仅提供了一种服务而已,要搞成什么样子全靠自己。所以如果你想自己去设计目录结构,模块的划分等个性化设计时,推荐使用Flask。弊端也很明显,如果你不是一个经验丰富的开发者,你很可能会把整个项目架构设计的乱七八糟。

  对于我来说,很多时候一个项目刚开始并不觉得是个大项目,做到后面功能越来越多,扩展越来越多,就变成了一个大项目,而使用Flask就很容易的完成这个任务,小型项目快速开发,大项目设计灵活

然后我又借鉴了一篇博客的讲解(https://www.cnblogs.com/mysql-dba/p/6070258.html),逐渐建立起了自己对于flask框架的初步理解(一点基础都没有,只能自己一步步摸索,有个别错误,还需各位指出~)。

这是我文件的结构,关于他们的介绍保存在introduce.txt里,是这样写的:

1)最上层dacxxx目录是项目名称,一个项目下可以包括多个模块,也就是应用,每个应用下有自己的配置文件,初始化文件,MVC架构。

2)dacxxx.py:与应用模块平级,作为项目启动文件

3)第二级MongoDBCURD目录:模块名称

       controller目录:MVC中的C,主要存放视图函数

       model目录:MVC中的M,主要存放实体类文件,映射数据库中表

       templates:MVC中的V,存放html文件

       static:静态文件,主要存放css,js等文件

       __init__.py:模块初始化文件,Flask 程序对象的创建必须在 __init__.py 文件里完成, 然后我们就可以安全的导入引用每个包。

       setting.py:配置文件,数据库用户名密码等等

于是,遵循这个方针,我开始了对于mongodb数据库的各种操作,下面是各个文件的代码及注释内容:

代码及注释

setting.py:就是一些配置信息

# _*_ coding: utf-8 _*_

#调试模式是否开启
DEBUG = True

MONGO_DBNAME='dachuang'

MONGO_URI='mongodb://127.0.0.1:27017/dachuang'

实体O2O.py

from MongoDBCURD import db

class O2O(db.Model):
    __tablename__ = 'o2O1'
    id = db.Column(db.Integer,primary_key=True)
    area = db.Column(db.String(16))
    storename = db.Column(db.String(16))
    address = db.Column(db.String(16))
    describe = db.Column(db.String(16))
    pictures = db.Column(db.ARRAY)
    sell_num = db.Column(db.Integer)
    price_avepeo = db.Column(db.DECIMAL)
    storeclass = db.Column(db.String(16))
    storetype = db.Column(db.String(16))

    def __init__(self,area,storename,address,describe,pictures,sell_num,price_avepeo,storeclass,storetype):
        self.area  = area
        self.storename = storename
        self.address = address
        self.describe = describe
        self.pictures = pictures
        self.sell_num = sell_num
        self.price_avepeo = price_avepeo
        self.storeclass = storeclass
        self.storetype = storetype
    def __repr__(self):
        return '<O2O %r %r %r %r %r %r %r %r %r>' % self.area,self.storename,self.address,self.describe,self.pictures,self.sell_num,self.price_avepeo,self.storeclass,self.storetype

controller:

o2Omanager.py:

from flask import Flask,request
from MongoDBCURD import app,db
import json

#根据地点和大类获取实体
@app.route('/getAllO2OStores_area_storeclass',methods=['GET'])
def getAllO2OStores_area_storeclass():
    area=request.args.get('area')
    storeclass=request.args.get('storeclass')
    print(area,storeclass)
    data=db.db.o2O.find({'area':area,'storeclass':storeclass})#返回的是个游标,所以要for循环
    result=[]
    for x in data:
        result.append(x)
    print(result)
    return json.dumps(result,ensure_ascii=False)

这个是查,增删改查都有相应的函数,比如delete之类的,具体百度就好了,

改:

改动数据

@app.route('/update')

def update():

user = mongo.db.users

Bill = user.find_one({'username': 'Bill'})

Bill['password']  = '2222'

user.save(Bill)

return 'Updated Bill!'
————————————————
版权声明:本文为CSDN博主「wzshenn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/github_34712959/article/details/51485686

删:

删除数据

@app.route('/delete')

def delete():

user = mongo.db.users

Bill = user.find_one({'username': 'Bill'})

user.remove(Bill)

return 'Removed Bill!'
————————————————
版权声明:本文为CSDN博主「wzshenn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/github_34712959/article/details/51485686

增:

增加数据

@app.route('/add')

def add():

user = mongo.db.users

user.insert({'username':'Bill' , 'password':'1111'})

return 'Added User!'

__init_.py:注意后面controller的引用必须在app对象创建后面

# -*- coding: utf-8 -*-
from flask import Flask
from flask_pymongo import PyMongo
#创建项目对象
app = Flask(__name__)

#加载配置文件内容
app.config.from_object('MongoDBCURD.setting') #模块下的setting文件名,不用加py后缀  
db = PyMongo(app)

##只有在app对象之后声明,用于导入view模块
from MongoDBCURD.controller import o2Omanager
from MongoDBCURD.controller import doSearch

启动文件dacxxx.py


from MongoDBCURD import app

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


if __name__ == '__main__':
    app.run(debug=True)

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CtrlZ1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值