Metadata-Version: 2.4
Name: py-dbms-cli
Version: 3.0.4
Summary: A modern, secure, aesthetic and your ultimate DBMS client. Implemented as a CLI (Command-Line Interface) tool and written 100% in Python
Author-email: Anish Sethi <sethi.dynasty123@gmail.com>
License: Copyright 2025 Anish Sethi
        
        Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
        
        1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
        
        2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
        
        3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
        
        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Project-URL: Homepage, https://github.com/Anish-Sethi-12122/py-dbms-cli
Project-URL: Source, https://github.com/Anish-Sethi-12122/py-dbms-cli
Project-URL: Issues, https://github.com/Anish-Sethi-12122/py-dbms-cli/issues
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mysql-connector-python
Requires-Dist: rich
Requires-Dist: pyfiglet
Requires-Dist: sqlparse
Requires-Dist: pwinput
Dynamic: license-file

# PY DBMS — A Modern, Secure MySQL CLI Client

**Experimental Release — v3.0.0 (Architecture Update)**

> **Note on v3.0.0:** This version marks a major internal overhaul focused on architecture modernization and long-term extensibility. While labeled **Experimental**, it establishes the foundation for multi-engine support and advanced data exporting in the upcoming v3.1.0 stable release.

PY DBMS is a modern, developer-focused command-line client for MySQL, built with Python.  
It provides a clean terminal UI, readable query output, and powerful helper commands—without sacrificing safety or simplicity.

Designed for developers who live in the terminal but want a more structured, reliable experience than the default MySQL CLI.

---

## Key Features

### 🏗️ NEW: Modular Architecture (v3.0)
- **Decoupled DB Connectors:** Connection logic is now abstracted from the CLI core, enabling future support for additional engines (PostgreSQL, SQLite, etc.).
- **Internal Result Abstraction:** Separates query execution from representation, allowing for consistent output across different display modes and export formats.

### 📤 NEW: Query Export System
- **Pluggable Export Manager:** A centralized system to handle various file formats.
- **CSV Support:** Export query results directly to `.csv` files using the new architecture.
- **Session Stability:** Export operations are non-fatal; errors in formatting or file I/O will not terminate your active session.

### Terminal UX
- **Rich Interface:** Structured panels and tables for high readability.
- **Visual Feedback:** Typewriter-style status messages and clear color-coded indicators for success, warnings, and SQL errors.
- **Startup Dashboard:** ASCII banner and session summary on launch.

### Configuration & Control
- **Persistent Config:** Robust JSON-based system (`config.json`) for long-term settings.
- **Session Layer:** Non-persistent configuration for runtime overrides.
- **Inline Helpers:** Per-query flags like `--expand` for instant output formatting changes.

### Security
- **Masked Credentials:** Secure password handling at login.
- **Local-First:** Designed with safe defaults for development environments.
- **Zero Persistence:** Sensitive credentials are never stored in the configuration files.

---

## Installation

### Prerequisites
- Python **3.10+** (recommended)
- A running MySQL Server

### Install via pip
```bash
pip install py-dbms-cli 
```

### Usage

**1. Run from your terminal**
```bash
pydbms  
```

**2. When prompted, enter credentials to establish connection with MySQL**
You will be prompted for:
  - Host
  - Username
  - Password (masked)

**3. Begin querying**

Enter SQL commands as you normally would.  
Multi-line queries are supported and executed once terminated with ;.  

---

## Meta Commands

PY DBMS includes several helper commands, and helper flags for interactive usage:

| Command | Description |
|------|-----------|
| `.help` | Show all helper commands |
| `.databases` | List all databases |
| `.tables` | List tables in the current database |
| `.schema <table>` | Show CREATE TABLE definition |
| `.clear` | Clear the terminal screen |
| `.version` | Show build and version information |
| `.config` | Show persistent configuration |
| `.config set <section>.<key> <value>` | Update a config value |
| `.config reset <section>.<key>` | Reset a config value |
| `.session-config` | Show session-level configuration |
| `.session-config set <key> <value>` | Update session-only settings |
| `.session-config reset <key>` | Reset a session setting |
| `.exit` | Exit the CLI |


| Flag | Description |
|------|-----------|
| `--expand` | Expand the result of query to not truncate in-view at End Of Line |
| `--export` | Export result of a query to save it |

**NOTE:** `--export` only implements `csv` as of v3.0.0  

---

## Roadmap

Planned future improvements include:

- [ ] v3.1.0 (Stable): Integration of a Profile System for saved connections.

- [ ] JSON Export: Adding JSON support to the pluggable export system.

- [ ] Multi-Engine: Initial support for SQLite or PostgreSQL connectors.

- [ ] Query History: Implementation of persistent command history.

---

## Author

Anish Sethi  
B.Tech Computer Science & Engineering  
Delhi Technological University (Class of 2029)  

---

## License

This project is licensed under the BSD 3-Clause License.  
Visit the [BSD 3-Clause License page](https://opensource.org/license/bsd-3-clause) for more information.
