# sql5 v3.1 - Python CLI Interface
## Overview
v3.1 新增 pure Python CLI 介面,提供與 Rust REPL 等效的功能:
```
$ python -m sql5
sql5> SELECT 1
sql5> .tables
sql5> .schema users
sql5> .quit
```
## Features
### Pure Python REPL
- 無需編譯 Rust 二進位檔即可使用
- 透過 Python client 連線到已啟動的 server(或自動啟動)
- 支援所有 SQL 語法和 FTS5 全文檢索
### Dot Commands
| `.help` | Show available commands |
| `.tables` | List all tables |
| `.schema [TABLE]` | Show CREATE statement |
| `.indexes` | List all indexes |
| `.quit` / `.exit` | Exit REPL |
| `.mode [csv/column]` | Output format |
### Interactive Features
- 自動補全(tab completion)
- SQL 語法高亮(可選)
- 多行 SQL 輸入(以 `;` 結尾)
- 歷史記錄(上下鍵)
## Changes from v3.0
- **New**: Python CLI (`python -m sql5`)
- **New**: `--cli` flag for Rust binary to enable JSON stdio mode
- **New**: `.mode`, `.indexes` commands
- **Version**: 3.1.0
## Installation
```bash
pip install sql5
```
Or install from source:
```bash
cd sql5_pypi
pip install -e .
```
## Usage
### Basic Usage
```bash
# In-memory database
python -m sql5
# Open database file
python -m sql5 mydb.db
# Execute single query and exit
python -m sql5 -c "SELECT * FROM users"
# Execute script file
python -m sql5 < script.sql
```
### Options
| `-c, --command` | Execute SQL and exit |
| `-s, --script` | Execute SQL script file |
| `--transport` | Transport mode (subprocess/websocket) |
| `--host` | WebSocket host (default: 127.0.0.1) |
| `--port` | WebSocket port (default: 8080) |
## Architecture
```
python -m sql5
│
▼
┌──────────────────┐
│ sql5 CLI │ ← Pure Python REPL
│ __main__.py │
└──────────────────┘
│ JSON stdio
▼
┌──────────────────┐
│ Rust server │
│ --server │
└──────────────────┘
```
## Protocol
Python CLI 使用 JSON stdio 與 Rust server 通訊:
```json
// Request
{"method": "execute", "sql": "SELECT 1"}
{"method": "tables"}
{"method": "schema", "table": "users"}
// Response
{"ok": true, "columns": ["1"], "rows": [[1]], "affected": 0}
{"ok": true, "tables": ["users", "posts"]}
{"ok": true, "sql": "CREATE TABLE users ..."}
```
## See Also
- [v3.0.md](./v3.0.md) - WebSocket server support
- [v2.0.md](./v2.0.md) - Client-server architecture