Python Expense Tracker Project in Hindi | खर्च ट्रैकर ऐप बनाएं Step-by-Step (Source Code सहित)

Python में सरल Expense Tracker कैसे बनाएं — स्टेप-बाय-स्टेप (कोड के साथ)

परिचय: इस पोस्ट में हम एक छोटा, उपयोगी और वास्तविक-दुनिया का Expense Tracker बनाएँगे जो Python और SQLite का उपयोग करता है। यह प्रोजेक्ट शुरुआती लोगों के लिए उपयुक्त है और आप इसे बाद में GUI या वेब ऐप में भी बढ़ा सकते हैं।

क्या मिलेगा

  • SQLite में खर्च़ सेव करना
  • नया खर्च़ जोड़ना
  • सभी खर्चे देखना
  • श्रेणी (category) के अनुसार सारांश (summary)
  • CSV में एक्सपोर्ट

फाइल्स और आवश्यकताएँ

आपको सिर्फ़ Python (3.7+) चाहिए। कोई बाहरी पैकेज ज़रूरी नहीं — हम Python का built-in sqlite3 और csv उपयोग करेंगे। python expense tracker project, expense tracker using python, expense tracker in hindi, python project for beginners, personal finance python project, sqlite python project,

पूरा Python कोड (एक ही फाइल: expense_tracker.py)

#!/usr/bin/env python3
"""
expense_tracker.py
साधारण Command-Line Expense Tracker (SQLite)
"""

import sqlite3
import csv
import os
from datetime import datetime

DB_FILE = "expenses.db"

def init_db():
    conn = sqlite3.connect(DB_FILE)
    cur = conn.cursor()
    cur.execute("""
    CREATE TABLE IF NOT EXISTS expenses (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        date TEXT NOT NULL,
        amount REAL NOT NULL,
        category TEXT NOT NULL,
        note TEXT
    )
    """)
    conn.commit()
    conn.close()

def add_expense(amount, category, note=""):
    date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    conn = sqlite3.connect(DB_FILE)
    cur = conn.cursor()
    cur.execute("INSERT INTO expenses (date, amount, category, note) VALUES (?, ?, ?, ?)",
                (date, amount, category, note))
    conn.commit()
    conn.close()
    print("✅ खर्च जोड़ा गया:", amount, "रु —", category)

def list_expenses(limit=100):
    conn = sqlite3.connect(DB_FILE)
    cur = conn.cursor()
    cur.execute("SELECT id, date, amount, category, note FROM expenses ORDER BY date DESC LIMIT ?", (limit,))
    rows = cur.fetchall()
    conn.close()
    if not rows:
        print("कोई खर्च दर्ज नहीं है।")
        return
    print(f"{'ID':<4} {'DATE':<20} {'AMOUNT':<10} {'CATEGORY':<15} NOTE")
    print("-"*70)
    for r in rows:
        print(f"{r[0]:<4} {r[1]:<20} {r[2]:<10.2f} {r[3]:<15} {r[4] or ''}")

def summary_by_category():
    conn = sqlite3.connect(DB_FILE)
    cur = conn.cursor()
    cur.execute("SELECT category, SUM(amount) FROM expenses GROUP BY category ORDER BY SUM(amount) DESC")
    rows = cur.fetchall()
    conn.close()
    if not rows:
        print("कोई खर्च दर्ज नहीं है।")
        return
    total = sum(r[1] for r in rows)
    print(f"{'CATEGORY':<20} {'AMOUNT':<10} {'% of Total'}")
    print("-"*45)
    for cat, amt in rows:
        pct = (amt / total * 100) if total else 0
        print(f"{cat:<20} {amt:<10.2f} {pct:>6.2f}%")
    print("-"*45)
    print("Total:", total)

def export_csv(filename="expenses_export.csv"):
    conn = sqlite3.connect(DB_FILE)
    cur = conn.cursor()
    cur.execute("SELECT id, date, amount, category, note FROM expenses ORDER BY date")
    rows = cur.fetchall()
    conn.close()
    with open(filename, "w", newline='', encoding="utf-8") as f:
        writer = csv.writer(f)
        writer.writerow(["id","date","amount","category","note"])
        writer.writerows(rows)
    print("✅ Exported to", filename)

def delete_expense(expense_id):
    conn = sqlite3.connect(DB_FILE)
    cur = conn.cursor()
    cur.execute("DELETE FROM expenses WHERE id = ?", (expense_id,))
    conn.commit()
    affected = cur.rowcount
    conn.close()
    if affected:
        print("✅ Deleted expense id", expense_id)
    else:
        print("❌ ऐसा कोई expense id नहीं है:", expense_id)

def interactive_menu():
    init_db()
    while True:
        print("\n--- Expense Tracker Menu ---")
        print("1. नया खर्च जोड़ें")
        print("2. खर्चों की सूची दिखाएँ")
        print("3. श्रेणी अनुसार सारांश")
        print("4. CSV में एक्सपोर्ट करें")
        print("5. खर्च हटाएँ (ID से)")
        print("6. बाहर निकलें")
        choice = input("चुनें (1-6): ").strip()
        if choice == "1":
            try:
                amt = float(input("राशि (₹): ").strip())
            except:
                print("अमान्य राशि।")
                continue
            cat = input("श्रेणी (e.g., Groceries, Transport): ").strip() or "Other"
            note = input("नोट (आवश्यक नहीं): ").strip()
            add_expense(amt, cat, note)
        elif choice == "2":
            lim_str = input("कितने दिखाएँ? (default 100): ").strip()
            lim = int(lim_str) if lim_str.isdigit() else 100
            list_expenses(lim)
        elif choice == "3":
            summary_by_category()
        elif choice == "4":
            fname = input("फाइल नाम (default expenses_export.csv): ").strip() or "expenses_export.csv"
            export_csv(fname)
        elif choice == "5":
            id_str = input("हटाने के लिए ID डालें: ").strip()
            if id_str.isdigit():
                delete_expense(int(id_str))
            else:
                print("Invalid ID.")
        elif choice == "6":
            print("नमस्ते 👋")
            break
        else:
            print("अमान्य चयन। फिर से कोशिश करें।")

if __name__ == "__main__":
    interactive_menu()

कैसे चलाएँ

  1. Python 3 इंस्टॉल करें (जाँच: python3 --version)
  2. ऊपर का कोड कॉपी करके expense_tracker.py नाम से सेव कर लें।
  3. कमांड प्रॉम्प्ट/टर्मिनल में फाइल वाले फ़ोल्डर में जाकर चलाएँ:
    python3 expense_tracker.py
  4. इन्टरैक्टिव मेन्यू खुल जाएगा — विकल्प चुनकर खर्च जोड़ें, देखें, सारांश लें या CSV निकालें।

कस्टमाइज़ेशन के सुझाव

  • बजट अलर्ट: प्रत्येक महीने के लिए बजट जोड़ें और अगर खर्च ज़्यादा हुआ तो अलर्ट दिखाएँ।
  • GUI: Tkinter या PyQt से GUI बनाइये ताकि non-technical उपयोगकर्ता भी उपयोग कर सकें।
  • वेब ऐप: Flask/Django से यह ऐप वेब पर चला सकते हैं और मोबाइल से भी यूज़ कर सकते हैं।
  • ऑटो बैकअप: समय-समय पर SQLite से CSV एक्सपोर्ट कर Google Drive/Dropbox पर बैकअप करें।

अक्सर पूछे जाने वाले सवाल (FAQ)

Q: क्या मैं MySQL/ PostgreSQL भी उपयोग कर सकता हूँ?
A: हाँ — बस sqlite3 कॉल्स को उचित DB-driver (जैसे psycopg2 या mysql-connector-python) से बदलें और SQL connection स्ट्रिंग अपडेट करें।

Q: क्या यह मोबाइल पर चलेगा?
A: CLI तो नहीं पर GUI या वेब वर्शन मोबाइल-फ्रेंडली बनाया जा सकता है।

समाप्ति

यह छोटा प्रोजेक्ट शुरुआती के लिए बढ़िया है — SQLite के साथ काम करने, CRUD operations समझने और Python scripting का अभ्यास करने के लिए। अगर आप चाहें तो मैं यह भी बना कर दे सकता हूँ:

  • GUI (Tkinter) वाली डेस्कटॉप एप
  • Flask बेस्ड वेब-ऐप (login, REST API, Bootstrap UI)
  • CSV/Excel से इम्पोर्ट-एक्सपोर्ट फीचर

यदि आप चाहें तो अभी बताइए कौन-सा वर्शन चाहिए — मैं उसी के अनुसार पूरा कोड और इंस्टॉलेशन स्टेप्स दे दूँगा।


लेखक: Gk Sharma · प्रकाशित: आज

Python Projects, Expense Tracker, Python Beginners, SQLite Project, Hindi Coding, Python Tutorials External Links (Authority बढ़ाने के लिए) Official Python.org sqlite3 Documentation

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Python से Simple Calculator कैसे बनाएं | Python Calculator Code in Hindi (CLI + GUI Tutorial)

RBSE Class 12 Computer Science Chapter 1 Question and Answers

अपने कंप्यूटर में पाइथन कैसे इनस्टॉल करें How to install Python in your Computer