IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python使用flask框架操作mongodb基本使用 -> 正文阅读

[Python知识库]python使用flask框架操作mongodb基本使用

系统 vm虚拟机 + ubuntu18.04 python版本3.6.9 Flask版本2.0.3

上一节?mongodb基本使用(python)?转自 清夢懮

本节 简单讲一下如何简单用框架操作mongodb数据库,大部分都是上一节的内容只是改了改,变成一个框架操作数据库了而已

用什么框架不重要重要的是明白理解学以致用!

进入正题:

? ? ? ? 先下载flask要是觉得怕把环境搞坏了就创建一个虚拟环境?

ubuntu创建python虚拟环境? 转自 清夢懮

? ? ? ? 然后使用pip3 install Flask下载flask要是说pip3没找到就重新下载sudo apt instlal pip3 应该是

? ? ? ? 然后再下载flask,下载完之后就能正常的使用了,我先把上次的文件挪了过来整理了目录结构如

?然后就改写里面的详细的东西,创建了一个统一测试的接口自己测试测了半天才写的差不多

我们先编写main入口文件

from model.config import flask_default
from flask_cors import CORS
#  操作数据库文件
from view.momgo_do import mongo_view


from flask import Flask




# 实例化flask对象
app = Flask(__name__)

app.config['JSON_AS_ASCII'] = False
# 跨域
CORS(app,cors_allowed_origins="*")

# views  数据库操作蓝图
app.register_blueprint(mongo_view)








if __name__ == '__main__':
    app.run(host=flask_default['host'],port=flask_default['port'])

主路口的配置文件

mongo_client={
    # ip
    "host":"127.0.0.1",
    # 端口
    "port":27017,
    # 账号
    "username":"admin",
    # 密码
    "pwd":"admin",
    # 连接的库
    "database":"sange"
}

flask_default = {
        # 端口
    "port":"6379",
    # ip
    "host":"127.0.0.1"
}

?

?跟那些框架差不多都是实例化、中间件、蓝图、run,然后run里面写一堆的ip,端口啥的

然后写蓝图

from flask import Blueprint, jsonify, request
from flask.views import  MethodView
from mongo_db import db

mongo_view = Blueprint("mongo_view",__name__)

#  主页
class Hello(MethodView):
    def get(self):
        print("")
        return "Hello"
    
# 操作mongocleardb的视图
class Params_server(MethodView):
    # 获取参数,type为one获取一个空为全部
    def get(self):
        type = request.args.get("type",None)
        find_where = request.args.get("find_where",None)
        if type == "one":
            return  jsonify({"err":"200","data":str(db.params_find_one(find_where=find_where)),"msg":"查找成功"}) 
        else:
            return  jsonify({"err":"200","data":str(db.params_find_all(find_where=find_where)),"msg":"查找成功"})  
        
    #  添加一个或者多个数据
    def post(self):
        data = request.form.get("data",None)
        print(data,type(data))
        if not data:
            return jsonify({"err":"205","msg":"请输入要添加的参数"})
        else:
            try:
                db.add_one(data = data)
            except Exception as e:
                    return jsonify({"err":"205","msg":"添加失败,请确认格式等信息"+str(e)})
            return jsonify({"err":"200","msg":"添加成功"})
    # 更新参数
    def put(self):
        data = request.form.get("data",None)
        find_where = request.form.get("find_where",None)
        
        print(data,find_where)
        if not (find_where and data):
            return jsonify({"err":"205","data":"请输入需更新的参数或更新后的数据"})
        else:
            try:
                db.params_update_one(find_where=find_where,update_data=data)    
            except Exception as e:
                return jsonify({"err":"205","msg":"更新出错"+str(e)})
            return jsonify({"err":"205","msg":"更新成功"})
            


            
        
# 主页
mongo_view.add_url_rule('/',view_func= Hello.as_view("Hello"))
# 数据库交互
mongo_view.add_url_rule("/mongodb",view_func=Params_server.as_view("Params_server"))

主页的那个只是展示主页显示的数据,用来测试的,为了测试逻辑更代码是否能通顺的?如?

这样就能简单的实现了操作数据库

?其次是操作数据库的代码 mongo_db.py

from model.mongodb_client import MongoDBLink
from model.config import mongo_client
db = MongoDBLink(mongo_client['host'],mongo_client['port'],mongo_client['username'],mongo_client['pwd'],database=mongo_client['database'])


if __name__ == "__main__":
    data = {
        'title' : 'titile1 ' ,
        'about':'123123',
    }
    print(db.params_find_one(database='test',find_where=data))

mongodb_client.py

import json
import pymongo


# 一个简单的序列化器 

class number_dict(object):
    def __init__(self,data):
        self.data = data
    def to_list(self):
        list1 = []
        for i in self.data:
            list1.append(i)
        return list1


# 启动类 
class MongoDBLink(object):
    #  需要四个参数启动地址、端口号、账号、密码、连接的库
    def __init__ (self,host,port,username,pwd,database):
        self.host = host
        self.port = port
        self.client = pymongo.MongoClient(host = self.host,port=self.port,username=username,password=pwd,)
        self.db = self.client[database]
        self.data = database
        
    # 添加一个数据 
     # 参数,json类型的数据,数据库名字
    def add_one(self,data):
        data = json.loads(data)
        print(data,type(data))
        self.db[self.data].insert_one(dict(data))
        # try:
        #     print(data)
        #     print(self.data)
        #     self.db[self.data].insert_one(data)
        # except Exception as e:
        #     print("添加数据时候出错",e)
        #     return False
        # print("添加数据成功{}".format(data))
        # return True
    
    # 查找一个数据  find_where查询条件默认查全部
    def params_find_one(self,find_where=None):
        if find_where:
            return   self.db[self.data].find_one(find_where)
        else:
            return self.db[self.data].find_one()
        
    #  查找全部数据 find_where查询条件默认查全部
    def params_find_all(self,find_where=None):
        print(find_where)
        # data = self.db[database].find()
        if find_where:
            return number_dict(self.db[self.data].find(find_where)).to_list()
        else:
            return number_dict(self.db[self.data].find()).to_list()
        
    #  更新数据库指定的参数
    def params_update_one(self,update_data,find_where):
        print(update_data,find_where)
        self.db[self.data].update_one(json.loads(find_where),{"$set":json.loads(update_data)})

    # def params


        

通过这几样的配置就能够操作数据库了

然后是api测试的文件,为了方便测试就单独写了一个文件创建一个类,

import requests
import json


url  = 'http://127.0.0.1:6379/mongodb?type=one'

# 接口测试
import requests

# 发起http请求
class HttpApiTest:
    # 修改接口
    def test_put(self, url, data={}):
        print(data)
        res = requests.put(url, data=data)
        return res.text

    # 插入接口
    def test_post(self, url, data={}):
        print(data)
        res = requests.post(url, data=data)
        return res.text

    # 查询接口
    def test_get(self, url, data={}):
        res = requests.get(url, params=data)
        return res.text

    # 删除接口
    def test_del(self, url, data={}):
        res = requests.delete(url, params=data)
        return res.text

if __name__ == '__main__':
    # 实例化对象
    httpapi = HttpApiTest()
    # 请求接口
    # res = httpapi.test_post("http://localhost:5000/add_user/", data={"email":"123","password":""}) 
    post_number = json.dumps({"name":"zhangsan","value":"18","height":1.8,"age":"18","sex":"man"})
    updata_number =  json.dumps({"name":"lisi","value":"18","height":1.8,"age":"18","sex":"man"})
    find_where  =json.dumps({"name":"zhangsan"})
    # 获取
    res = httpapi.test_get("http://127.0.0.1:6379/mongodb", data={"find_where":""})
    # 添加
    # res = httpapi.test_post("http://127.0.0.1:6379/mongodb", data={"data":post_number})
    # 更新
    # res = httpapi.test_put("http://127.0.0.1:6379/mongodb", data={"data":updata_number,"find_where":find_where})
    # print(json.loads(res)['data'])
    print(res)








源码--网盘?转自 清夢懮

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:52:04  更:2022-10-31 11:52:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 3:21:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计