Python整合SQLite搭建一个轻量级账本应用
更新时间:2025年07月08日 09:13:59 作者:金泽宸
这篇文章为大家详细主要介绍了如何使用Python整合SQLite搭建一个轻量级账本应用,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
想记账,但不想用冗杂 App?这篇带你用 Python 和 SQLite 快速打造一个能记录收支、统计余额、按月查询的本地账本工具,轻便、够用、可扩展!
本文目标
- 用
sqlite3构建账本数据库 - 支持新增收支、查询记录、统计总额
- 打造命令行交互式账本工具
- 实现按月过滤和类型筛选
一、数据库设计
创建一张records表
CREATE TABLE records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL, -- 收入 / 支出
category TEXT NOT NULL, -- 分类(工资、餐饮、交通等)
amount REAL NOT NULL, -- 金额
note TEXT, -- 备注
date TEXT NOT NULL -- 日期(YYYY-MM-DD)
)
二、初始化数据库(init_db.py)
import sqlite3
conn = sqlite3.connect("ledger.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL,
category TEXT NOT NULL,
amount REAL NOT NULL,
note TEXT,
date TEXT NOT NULL
)
""")
conn.commit()
conn.close()
print("✅ 数据库初始化完成")
运行一次:
python init_db.py


三、添加收支记录(add.py)
import sqlite3
from datetime import datetime
def add_record():
rtype = input("类型(收入/支出):")
category = input("分类(工资/餐饮等):")
amount = float(input("金额:"))
note = input("备注(可选):")
date = input("日期(默认今天,回车跳过):") or datetime.now().strftime("%Y-%m-%d")
conn = sqlite3.connect("ledger.db")
cursor = conn.cursor()
cursor.execute("""
INSERT INTO records (type, category, amount, note, date)
VALUES (?, ?, ?, ?, ?)
""", (rtype, category, amount, note, date))
conn.commit()
conn.close()
print("✅ 记录添加成功")
if __name__ == "__main__":
add_record()
四、查询总览 & 统计(view.py)
import sqlite3
def list_records():
conn = sqlite3.connect("ledger.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM records ORDER BY date DESC")
rows = cursor.fetchall()
total_income = 0
total_expense = 0
for row in rows:
id, rtype, cat, amt, note, date = row
print(f"{id}. [{rtype}] {cat} ¥{amt} - {note} ({date})")
if rtype == "收入":
total_income += amt
else:
total_expense += amt
balance = total_income - total_expense
print(f"\n📈 收入总计:¥{total_income:.2f}")
print(f"📉 支出总计:¥{total_expense:.2f}")
print(f"💰 当前余额:¥{balance:.2f}")
conn.close()
if __name__ == "__main__":
list_records()
五、进阶:按月份或分类过滤查询(filter.py)
import sqlite3
def filter_by_month(month): # 格式:2025-07
conn = sqlite3.connect("ledger.db")
cursor = conn.cursor()
cursor.execute("""
SELECT * FROM records WHERE date LIKE ?
ORDER BY date DESC
""", (f"{month}%",))
for row in cursor.fetchall():
print(row)
conn.close()
filter_by_month("2025-07")
使用演示
python add.py # 添加记录 python view.py # 查看总览 python filter.py # 按月过滤


拓展挑战
- 使用
argparse实现ledger.py add/view/filter多命令工具 - 导出账单为 CSV、Excel
- 添加分类分析图表(搭配
matplotlib)
总结
SQLite 是个人项目和轻量应用最值得掌握的数据库,能存、能查、免服务、易扩展,完美适配一切“小而美”场景。
到此这篇关于Python整合SQLite搭建一个轻量级账本应用的文章就介绍到这了,更多相关Python账本应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
这篇文章主要介绍了Python数据结构与算法之常见的分配排序法,结合实例形式分析了桶排序与基数排序的相关原理及实现技巧,需要的朋友可以参考下2017-12-12
在echarts中图例legend和坐标系grid实现左右布局实例
这篇文章主要介绍了在echarts中图例legend和坐标系grid实现左右布局实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
Anaconda+Pycharm环境下的PyTorch配置方法
这篇文章主要介绍了Anaconda+Pycharm环境下的PyTorch配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03
python定时检查启动某个exe程序适合检测exe是否挂了
定时检查启动某个exe程序这种情况下适合检测某个exe程序是否挂了,感兴趣的朋友可以了解下,希望本文对你有所帮助2013-01-01


最新评论