小企业信息化系统开发
小企业进销存轻量化落地:用 SQL + 轻量 Web 替代 Excel 的实操路径
2026年9月1日
用一张最小库存表加 30 行 Python,帮小企业把进销存从多人 Excel 解放出来。
进销存小企业信息化SQL库存管理
小企业进销存轻量化落地:用 SQL + 轻量 Web 替代 Excel 的实操路径
摘要
十人以内的贸易、零售小店,库存常靠一张共享 Excel 管理,结果永远是"谁改了最后一行""版本对不上"。本文给出一条低成本的进销存落地路径:用 SQLite 存数据、用 30 行 Python(Flask)做入库/出库界面,当天就能用,预算为零。
一、Excel 管库存的典型痛点
- 并发冲突:两人同时打开,后保存者覆盖前者,盘点永远差一笔。
- 无审计:不知道谁在几点改了哪个数,错账难追。
- 公式脆弱:一个误删导致整列 SUM 失效,且不易察觉。
- 统计慢:想看"本月销量 TOP10"要手写透视表,月底加班。
本质问题是:Excel 是表格工具,不是系统。把"数据 + 规则 + 界面"分开,问题自然消失。
二、最小可用的数据模型
先只做三张表,覆盖 80% 场景:
CREATE TABLE products (
id INTEGER PRIMARY KEY,
sku TEXT UNIQUE,
name TEXT,
price REAL
);
CREATE TABLE stock_log (
id INTEGER PRIMARY KEY,
sku TEXT,
delta INTEGER, -- 入库正、出库负
qty_after INTEGER,
operator TEXT,
ts DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE VIEW v_stock AS
SELECT p.sku, p.name, COALESCE(SUM(s.delta),0) AS qty
FROM products p LEFT JOIN stock_log s ON p.sku=s.sku
GROUP BY p.sku;
stock_log 只追加不修改,任何变动都留痕;当前库存用视图实时汇总,杜绝"库存列被手改"的风险。
三、用 30 行 Python 搭一个入库接口
from flask import Flask, request
import sqlite3
app = Flask(__name__)
def db():
return sqlite3.connect("shop.db")
@app.post("/in")
def inbound():
sku, n, op = request.json["sku"], int(request.json["n"]), request.json["op"]
c = db(); cur = c.cursor()
qty = cur.execute("SELECT COALESCE(SUM(delta),0) FROM stock_log WHERE sku=?",(sku,)).fetchone()[0]
cur.execute("INSERT INTO stock_log(sku,delta,qty_after,operator) VALUES(?,?,?,?)",
(sku, n, qty+n, op))
c.commit(); return {"ok": True, "qty": qty+n}
前端用一个简单表单 POST 到 /in,出库把 n 传负数即可。所有操作写入 stock_log,天然形成流水账。
四、库存预警与盘点
低库存提醒只需一条 SQL:
SELECT sku, name, qty FROM v_stock WHERE qty < 10;
把结果每天定时邮件给老板,比人工盯表靠谱。盘点时让仓管在系统里做"调整单"(正负数的 delta),差异自动留在日志里,谁调的不一致一目了然。
五、上线与备份建议
- 部署:这台 Flask 服务跑在内网一台旧电脑即可,用
waitress或gunicorn代替开发服务器。 - 权限:先用一个公共账号跑通流程,再按需加登录;小团队不必一上来做复杂 RBAC。
- 备份:SQLite 是单文件,
shop.db每天copy到另一块盘 + 云盘,成本为零,可靠性够用。 - 演进:等流程跑顺了,再补供应商、客户、订单表,平滑长成完整 ERP,不会被早期设计锁死。
小结
小企业信息化不必一步到位买 SaaS。先用"一张表 + 一个接口"解决最痛的库存准确性,用追加日志换可控性,用视图换实时性。等团队信任这套系统了,再像搭积木一样往外扩,风险最低、见效最快。