CLI tool for schema tracking
Project description
Datatrack - Lightweight Schema Change Tracker
Datatrack is a minimal open-source CLI tool to track schema changes across versions in your data systems. It's built for Data Engineers and Platform Teams who want automated schema linting, verification, diffs, and export across snapshots.
Features
- Snapshot schemas from any SQL-compatible DB
- Lint schema naming issues
- Enforce verification rules
- Compare schema snapshots (diff)
- Export to JSON/YAML for auditing or CI
- Full pipeline in one command
Installation
git clone https://github.com/nrnavaneet/datatrack.git
cd datatrack
pip install -r requirements.txt
pip install -e .
How to Use
1. Initialize Tracking
datatrack init
Creates .datatrack/, .databases/, and optional initial files.
2. Create Example SQLite DB (Optional)
import sqlite3
from pathlib import Path
Path(".databases").mkdir(parents=True, exist_ok=True)
conn = sqlite3.connect(".databases/example.db")
c = conn.cursor()
c.execute("CREATE TABLE users (id INTEGER, name TEXT, created_at TEXT)")
c.execute("CREATE TABLE orders (order_id INTEGER, user_id INTEGER, amount REAL)")
conn.commit()
conn.close()
3. Take a Schema Snapshot
datatrack snapshot --source sqlite:///.databases/example.db
4. Run Linter
datatrack lint
Warns if ambiguous names, overly generic types, etc.
5. Schema Verification
datatrack verify
By default reads rules from schema_rules.yaml in project root.
6. Show Schema Differences
datatrack diff
Compares latest 2 snapshots.
7. Export Snapshot or Diff
datatrack export --type snapshot --format json --output output/snapshot.json
datatrack export --type diff --format yaml --output output/diff.yaml
8. View Snapshot History
datatrack history
Lists snapshot filenames.
9. Run Full Pipeline
datatrack run --source sqlite:///.databases/example.db
This runs:
lintsnapshotverifydiffexport
To change export location:
datatrack run --source sqlite:///.databases/example.db --export-dir my_output_dir
👤 Author
Built with ❤️ by @nrnavaneet
📝 License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sdbsrtbssjjhvj-0.1.0.tar.gz.
File metadata
- Download URL: sdbsrtbssjjhvj-0.1.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
920f7780222c763a51c89486978cc7e2cc00c272af7828828a369190ad66f19f
|
|
| MD5 |
b97b5aa8eb30fb1ebc82d27e151c91a0
|
|
| BLAKE2b-256 |
08672fc2de33c3378d8570cd14d7219aab6ed77bb491d8fd8380267a6e137dc0
|
File details
Details for the file sdbsrtbssjjhvj-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sdbsrtbssjjhvj-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b60a7cd3a0efa71dc9f691b8a5e576973f3cd6ad540f25a1bbc0ea42ea2f270
|
|
| MD5 |
adc9a9db4cfd4cc95cb3019f880b4e9d
|
|
| BLAKE2b-256 |
1dffe050337caf335c573931466fa31238c8d4dfed605bd81a66a5a571e736ec
|