news 2026/4/21 7:39:58

【MongoDB实战】8.2 简易商品管理系统-核心功能实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MongoDB实战】8.2 简易商品管理系统-核心功能实现

文章目录

  • 简易商品管理系统(MongoDB + Flask 实现)
    • 一、环境准备
      • 1. 安装依赖
      • 2. 配置文件(.env)
    • 二、核心代码实现
      • 整体结构
    • 三、核心功能说明
      • 1. 数据层(ProductDB)
      • 2. 业务层(ProductService)
      • 3. 接口层(Flask 路由)
    • 四、测试示例
      • 1. 启动服务
      • 2. 接口测试(curl 示例)
        • (1)新增商品
        • (2)查询单个商品
        • (3)更新库存
        • (4)分类统计
        • (5)删除商品
    • 五、扩展与优化

简易商品管理系统(MongoDB + Flask 实现)

本文将完整实现基于MongoDB + Python Flask的简易商品管理系统,聚焦 MongoDB 核心操作(CRUD + 聚合),同时封装业务层逻辑(库存校验、分类统计),并提供 HTTP 接口层

一、环境准备

1. 安装依赖

pipinstallpymongo flask python-dotenv

2. 配置文件(.env)

存放 MongoDB 连接信息,避免硬编码:

# MongoDB 连接配置MONGO_URI=mongodb://localhost:27017/MONGO_DB_NAME=product_managementMONGO_COLLECTION_NAME=products

二、核心代码实现

整体结构

# main.pyimportosfromdotenvimportload_dotenvfromflaskimportFlask,request,jsonifyfrompymongoimportMongoClientfrombson.objectidimportObjectIdfrombson.errorsimportInvalidId# 加载环境变量load_dotenv()# 初始化 Flask 应用app=Flask(__name__)# ====================== 数据层:MongoDB 操作封装 ======================classProductDB:def__init__(self):"""初始化 MongoDB 连接"""self.client=MongoClient(os.getenv("MONGO_URI"))self.db=self.client[os.getenv("MONGO_DB_NAME")]self.collection=self.db[os.getenv("MONGO_COLLECTION_NAME")]# 1. 创建商品(C)defcreate_product(self,product_data):""" 新增商品 :param product_data: 商品字典(name, category, price, stock, description) :return: 新增商品的 ID """result=self.collection.insert_one(product_data)returnstr(result.inserted_id)# 2. 查询商品(R)defget_product_by_id(self,product_id):"""根据 ID 查询单个商品"""try:product=self.collection.find_one({"_id":ObjectId(product_id)})ifproduct:# 转换 ObjectId 为字符串,方便 JSON 序列化product["_id"]=str(product["_id"])returnproductexceptInvalidId:returnNonedefget_products_by_condition(self,condition=None):"""根据条件查询多个商品(默认查询全部)"""condition=conditionor{}products=[]forproductinself.collection.find(condition):product["_id"]=str(product["_id"])products.append(product)returnproducts# 3. 更新商品(U)defupdate_product(self,product_id,update_data):""" 更新商品信息 :param product_id: 商品 ID :param update_data: 要更新的字段字典 :return: 是否更新成功(True/False) """<
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 2:37:26

SQL必会必知整理-12-使用子查询

12.1 子查询任何SQL语句都是查询。但此术语一般指SELECT语句。SQL还允许创建子查询&#xff08;subquery&#xff09;&#xff0c;即嵌套在其他查询中的查询。12.2 利用子查询进行过滤SELECT cust_id FROM orders WHERE order_num IN (SELECT order_numFROM orderitemsWHERE pr…

作者头像 李华
网站建设 2026/4/17 19:42:06

SSE换环境导致502问题

华为云 必须加固定请求头 headers.add("Content-Type", "text/event-stream");headers.add("Transfer-Encoding", "chunked");阿里云 // 阿里云不可以加 Transfer-Encoding&#xff0c;不然阿里云原生网关报错 502 // 可能原因 阿里云…

作者头像 李华
网站建设 2026/4/17 16:41:02

同花顺短线大赚副图 源码分享

{}IF(PERIODNAME<>"日线") { 统计:"该指标只在日线周期下有效。"; RETURN; } r:((ZDMR[-1]BDMR[-1])-(ZDMC[-1]BDMC[-1]))/SHGZG*100; 大单净量:r; D3:EMA(EMA(r,30),3)*30,color00ffff; D5:EMA(EMA(D3,5),3),colorff00cc; D10:EMA(EMA(D3,10),3),co…

作者头像 李华
网站建设 2026/4/20 23:16:32

红烛量能副图 红多头黄加仓

{}VAR1:(VOL / (((HIGH - LOW) * 2) - ABS((CLOSE - OPEN)))); 买盘:IF((CLOSE > OPEN),(VAR1 * (HIGH - LOW)),IF((CLOSE < OPEN),(VAR1 * ((HIGH - OPEN) (CLOSE - LOW))),(VOL / 2))); 卖盘:IF((CLOSE > OPEN),(0 - (VAR1 * ((HIGH - CLOSE) (OPEN - LOW)))),IF(…

作者头像 李华
网站建设 2026/4/20 7:12:13

PostIn从基础到实践(13) - 集成soular,使用soular用户统一认证登录

PostIn 是一款开源免费的接口管理工具&#xff0c;支持免费私有化部署&#xff0c;轻量、简洁易用。本文将详细介绍如何安装PostInsoular&#xff0c;实现统一认证登录。 1、soular 安装 1.1 安装 本文以CentOS操作系统为例。 下载&#xff0c;CentOS安装包下载地址&#x…

作者头像 李华
网站建设 2026/4/17 15:39:34

使用 Docker 一键部署 PaddleOCR-VL: 新手保姆级教程

作者&#xff1a;飞桨开发者技术专家 刘力 | 适合人群&#xff1a;刚接触 PaddleOCR-VL Docker部署的同学 | 学习目标&#xff1a;从一台刚装好的 Ubuntu 24.04 开始&#xff0c;完成 Docker 环境准备 → 拉起 PaddleOCR-VL 服务 → 本机用 HTTP 调用 /layout-parsing 接口…

作者头像 李华