User

enuinely-Watchlist-के-लिए-कौन-सा-System-Genuinely-Use-करें? 1 of 2 1 Meri-Nayi-SQLite (Dashboard-में-Already-है, Robust) 2 Existing-CSV (portfolio_utils.py, पहले-से-App-में-है) 3 दोनों-Merge-करें (CSV-को-SQLite-में-Migrate-करें)

Asked by CNI Follower · 2 hrs ago · 14-09-2026

Best choice: Option 3 – CSV को SQLite में migrate करके सिर्फ SQLite को “single source of truth” बनाओ।

क्यों सिर्फ SQLite main system होना चाहिए?

1. Data Integrity & Reliability

- CSV: text file है, आसानी से corrupt/overwrite हो सकता है, version control मुश्किल।

- SQLite: proper database, transactions, constraints, indexes – watchlist/portfolio के लिए ज़्यादा भरोसेमंद।

2. Queries & Features (भविष्य के लिए)

- Watchlist में आगे जाके अक्सर ये सब चाहिए होता है:

- multiple watchlists (e.g., Swing, Long-Term, Intraday)

- tags/notes per stock

- alerts, triggers, P&L snapshots

- filters (sector, market-cap, volume, signals)

- ये सब SQLite पर आसान हैं (JOINs, WHERE, indexes), CSV पर बहुत messy हो जाता है (हर चीज़ Python में manually filter/sort).

3. Performance & Scaling

- CSV ठीक है simple scripts के लिए, लेकिन:

- बार‑बार read/write (हर refresh पर) → slow + IO heavy

- concurrent access risky

- SQLite: indexed queries, fast reads, safe writes, आसानी से कुछ हज़ार–लाख rows संभाल लेता है।

4. Maintainability (Code Side)

- अभी दो systems रखोगे (Dashboard‑SQLite + portfolio_utils‑CSV) तो:

- duplicate logic

- bug fix दो जगह

- sync issues (“CSV update हुआ, DB नहीं” या उल्टा)

- Migration के बाद: सारा core logic सिर्फ SQLite पर → code साफ़, कम bugs।

---

Practically क्या करना चाहिए? (Recommended Architecture)

1. SQLite को Master बनाओ

- Watchlist / Portfolio के लिए core tables:

- `watchlist_master` (watchlist_id, name, type, created_at…)

- `watchlist_items` (id, watchlist_id, symbol, exchange, added_at, tags, note, strategy_id, is_active…)

- अगर अभी सिर्फ एक watchlist है, तब भी ये structure future proof है।

2. CSV → SQLite Migration (एक बार का step)

- Python script से:

- CSV पढ़ो (pandas या csv module)

- cleaned data को `watchlist_items` / बाकी tables में insert करो।

- Migration के बाद:

- पुरानी CSV को सिर्फ backup/archive रखो, core app में use मत करो।

3. portfolio_utils.py Refactor

- जहाँ‑जहाँ CSV read/write हो रहा है:

- उसे SQLite queries से replace करो (`SELECT`, `INSERT`, `UPDATE`, `DELETE`).

- Common DB layer बनाओ:

- `db.py` जैसा module जो सारे DB operations handle करे;

बाक़ी जगह सिर्फ high‑level functions call हों जैसे `get_watchlist()`, `add_symbol_to_watchlist()` वगैरह।

4. CSV का Role क्या रहे?

- बस optional:

- Export: user को “Export to CSV” / “Download backup” फीचर।

- Import: किसी पुराने CSV से नई watchlist import करने के लिए एक controlled utility।

- Core logic & syncing हमेशा SQLite पर ही based रहे।

---

Summary

- Option 1 (केवल नई SQLite) – technically सही, लेकिन पुराना CSV data lose या unsynced रहेगा।

- Option 2 (केवल Existing CSV) – short‑term easy, long‑term painful: scaling, features, bugs।

- Option 3 (CSV→SQLite migration + सिर्फ SQLite master) – genuinely robust, scalable, maintainable solution for serious watchlist/portfolio सिस्टम।

If you have any further queries, please connect with us on 022-6290-10141 (Timings : 09.00 AM to 05.00 PM) or you can email us on info@cniinfoxchange.com