详细介绍:【MongoDB实战】8.2 简易商品管理系统-核心功能实现
文章目录
简易商品管理系统(MongoDB + Flask 实现)
本文将完整实现基于 MongoDB + Python Flask 的简易商品管理系统,聚焦 MongoDB 核心操作(CRUD + 聚合),同时 封装业务层逻辑(库存校验、分类统计),并提供 HTTP 接口层。
一、环境准备
1. 安装依赖
pip install pymongo flask python-dotenv
2. 配置文件(.env)
存放 MongoDB 连接信息,避免硬编码:
# MongoDB 连接配置
MONGO_URI=mongodb://localhost:27017/
MONGO_DB_NAME=product_management
MONGO_COLLECTION_NAME=products
二、核心代码实现
整体结构
# main.py
import os
from dotenv import load_dotenv
from flask import Flask, request, jsonify
from pymongo import MongoClient
from bson.objectid import ObjectId
from bson.errors import InvalidId
# 加载环境变量
load_dotenv()
# 初始化 Flask 应用
app = Flask(__name__)
# ====================== 数据层:MongoDB 操作封装 ======================
class ProductDB:
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)
def create_product(self, product_data):
"""
新增商品
:param product_data: 商品字典(name, category, price, stock, description)
:return: 新增商品的 ID
"""
result = self.collection.insert_one(product_data)
return str(result.inserted_id)
# 2. 查询商品(R)
def get_product_by_id(self, product_id):
"""根据 ID 查询单个商品"""
try:
product = self.collection.find_one({
"_id": ObjectId(product_id)})
if product:
# 转换 ObjectId 为字符串,方便 JSON 序列化
product["_id"] = str(product["_id"])
return product
except InvalidId:
return None
def get_products_by_condition(self, condition=None):
"""根据条件查询多个商品(默认查询全部)"""
condition = condition or {
}
products = []
for product in self.collection.find(condition):
product["_id"] = str(product["_id"])
products.append(product)
return products
# 3. 更新商品(U)
def update_product(self, product_id, update_data):
"""
更新商品信息
:param product_id: 商品 ID
:param update_data: 要更新的字段字典
:return: 是否更新成功(True/False)
"""<

浙公网安备 33010602011771号