Metadata-Version: 2.3
Name: legion-query-runner
Version: 0.2.0
Summary: 
Author: Legion AI
Author-email: info@thelegionai.com
Requires-Python: >=3.8.1
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: PyAthena (>=3.0.8)
Requires-Dist: advocate (>=1.0.0)
Requires-Dist: boto3 (>=1.28.8)
Requires-Dist: cryptography (>=3.0.0)
Requires-Dist: databricks-sql-connector (>=2.0.0)
Requires-Dist: funcy (>=2.0)
Requires-Dist: google-api-python-client (>=2.100.0)
Requires-Dist: google-auth
Requires-Dist: mysqlclient (==2.1.1)
Requires-Dist: oracledb (>=1.0.0)
Requires-Dist: psycopg2-binary (>=2.9.10)
Requires-Dist: pyhive (>=0.7.0)
Requires-Dist: pymssql (>=2.3.1)
Requires-Dist: python-dateutil (>=2.8.0)
Requires-Dist: requests (>=2.32.3)
Requires-Dist: snowflake-connector-python (>=3.0.0)
Requires-Dist: sqlparse (==0.5.0)
Requires-Dist: sshtunnel (==0.1.5)
Requires-Dist: thrift (>=0.16.0)
Requires-Dist: thrift-sasl (>=0.4.3)
Requires-Dist: urllib3 (>=1.26.19)
Description-Content-Type: text/markdown

# Legion Query Runners

This package provides query runners for Legion, supporting various database systems and data sources. The package provides a unified interface for executing queries, retrieving schemas, and handling result sets across different database systems.

## Supported Data Sources

- PostgreSQL
- Redshift
- Redshift (with IAM User/Role)
- CockroachDB
- MySQL
- MySQL (Amazon RDS)
- Microsoft SQL Server
- Microsoft SQL Server (ODBC)
- Big Query
- Oracle DB
- SQLite
- Amazon Athena
- Apache Hive
- Apache Hive (HTTP)
- Databricks
- Snowflake

## Installation

```bash
pip install legion-query-runner
```

## Basic Usage

```python
from legion_query_runner.query_runner import QueryRunner

# Initialize with database configuration
sqlite_config = {
    "database": "/path/to/your/database.sqlite"
}

# Example with SSH tunnel configuration
pg_config = {
    "host": "internal-db.example.com",
    "port": 5432,
    "user": "username",
    "password": "password",
    "dbname": "database_name",
    "ssh_tunnel_enabled": True,
    "ssh_host": "bastion.example.com",
    "ssh_port": 22,
    "ssh_username": "ssh_user"
}

# Create a QueryRunner instance
runner = QueryRunner('sqlite', sqlite_config)

# Test connection
runner.test_connection()

# Execute a query
results = runner.run_query("SELECT * FROM users LIMIT 10")
print(f"Columns: {results['columns']}")
print(f"Row count: {len(results['rows'])}")

# Get schema
schema = runner.get_schema()
for table in schema:
    print(f"Table: {table['name']}")
    for column in table['columns']:
        print(f"  - {column['name']} ({column['type']})")

# Get columns for a specific table
columns = runner.get_table_columns("users")
print(f"Columns in users table: {columns}")

# Get column types for a specific table
column_types = runner.get_table_types("users")
print(f"Column types in users table: {column_types}")
```

## Core Features

- **Unified Database Interface**: Interact with different databases using a consistent API
- **Schema Retrieval**: Get table and column information from your database
- **Type Inference**: Automatic detection of column data types
- **Query Execution**: Run SQL queries and process results in a standardized format
- **Connection Management**: Establish, test, and maintain database connections
- **SSH Tunneling**: Connect to databases through SSH tunnels with bastion host support
- **Authentication Support**: Handle various authentication methods including IAM for AWS services

## Development

To set up the development environment:

1. Install dependencies:
   ```bash
   poetry install --with dev
   ```

2. Run tests:
   ```bash
   poetry run pytest
   ```

## Publish

```
poetry publish --build
```

## License

Proprietary - All rights reserved by Legion. 
