Python整合SQLite搭建一個(gè)輕量級(jí)賬本應(yīng)用
想記賬,但不想用冗雜 App?這篇帶你用 Python 和 SQLite 快速打造一個(gè)能記錄收支、統(tǒng)計(jì)余額、按月查詢(xún)的本地賬本工具,輕便、夠用、可擴(kuò)展!
本文目標(biāo)
- 用
sqlite3構(gòu)建賬本數(shù)據(jù)庫(kù) - 支持新增收支、查詢(xún)記錄、統(tǒng)計(jì)總額
- 打造命令行交互式賬本工具
- 實(shí)現(xiàn)按月過(guò)濾和類(lèi)型篩選
一、數(shù)據(jù)庫(kù)設(shè)計(jì)
創(chuàng)建一張records表
CREATE TABLE records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL, -- 收入 / 支出
category TEXT NOT NULL, -- 分類(lèi)(工資、餐飲、交通等)
amount REAL NOT NULL, -- 金額
note TEXT, -- 備注
date TEXT NOT NULL -- 日期(YYYY-MM-DD)
)
二、初始化數(shù)據(jù)庫(kù)(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("? 數(shù)據(jù)庫(kù)初始化完成")
運(yùn)行一次:
python init_db.py


三、添加收支記錄(add.py)
import sqlite3
from datetime import datetime
def add_record():
rtype = input("類(lèi)型(收入/支出):")
category = input("分類(lèi)(工資/餐飲等):")
amount = float(input("金額:"))
note = input("備注(可選):")
date = input("日期(默認(rèn)今天,回車(chē)跳過(guò)):") 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()
四、查詢(xún)總覽 & 統(tǒng)計(jì)(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?? 收入總計(jì):¥{total_income:.2f}")
print(f"?? 支出總計(jì):¥{total_expense:.2f}")
print(f"?? 當(dāng)前余額:¥{balance:.2f}")
conn.close()
if __name__ == "__main__":
list_records()
五、進(jìn)階:按月份或分類(lèi)過(guò)濾查詢(xún)(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 # 按月過(guò)濾


拓展挑戰(zhàn)
- 使用
argparse實(shí)現(xiàn)ledger.py add/view/filter多命令工具 - 導(dǎo)出賬單為 CSV、Excel
- 添加分類(lèi)分析圖表(搭配
matplotlib)
總結(jié)
SQLite 是個(gè)人項(xiàng)目和輕量應(yīng)用最值得掌握的數(shù)據(jù)庫(kù),能存、能查、免服務(wù)、易擴(kuò)展,完美適配一切“小而美”場(chǎng)景。
到此這篇關(guān)于Python整合SQLite搭建一個(gè)輕量級(jí)賬本應(yīng)用的文章就介紹到這了,更多相關(guān)Python賬本應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas 中對(duì)特征進(jìn)行硬編碼和onehot編碼的實(shí)現(xiàn)
今天小編就為大家分享一篇pandas 中對(duì)特征進(jìn)行硬編碼和onehot編碼的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python使用PyFiglet實(shí)現(xiàn)終端輸出炫酷的ASCII藝術(shù)字效果
PyFiglet是一個(gè)基于Python的純文本到ASCII藝術(shù)字轉(zhuǎn)換工具,它實(shí)現(xiàn)了FIGlet的完整功能,本文給大家介紹了Python如何使用PyFiglet實(shí)現(xiàn)終端輸出炫酷的ASCII藝術(shù)字效果,需要的朋友可以參考下2025-12-12
Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式
這篇文章主要介紹了Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式,組合模式即Composite?Pattern,將對(duì)象組合成成樹(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),組合模式使得用戶(hù)對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性,下文具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-02-02
Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù)
這篇文章主要介紹了Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Python 中數(shù)組和數(shù)字相乘時(shí)的注意事項(xiàng)說(shuō)明
這篇文章主要介紹了Python 中數(shù)組和數(shù)字相乘時(shí)的注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
一個(gè)基于flask的web應(yīng)用誕生 flask和mysql相連(4)
一個(gè)基于flask的web應(yīng)用誕生第四篇,這篇文章主要介紹了如何讓flask和mysql進(jìn)行互聯(lián),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Python使用Selenium實(shí)現(xiàn)Web自動(dòng)化的完整指南
Selenium?是一個(gè)強(qiáng)大的開(kāi)源?Web?自動(dòng)化工具集,本文將作為一份面向完全新手的系統(tǒng)性指南,帶你一步步了解什么是?Selenium,以及如何使用?Python?編寫(xiě)你的第一個(gè)?Web?自動(dòng)化腳本2026-03-03

