StarRocks SQLAlchemy Dialect

1.3.3 · active · verified Wed Apr 15

The `starrocks` library provides a Python SQLAlchemy Dialect and an Alembic extension for interacting with StarRocks, a next-generation data platform designed for fast, real-time analytics. It enables developers to leverage SQLAlchemy's ORM and expression language, and manage database schema migrations with Alembic. The project is actively maintained with releases occurring every few months.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to establish a connection to a StarRocks database using SQLAlchemy's `create_engine` and execute a simple query. It uses environment variables for secure credential management. Ensure you have a running StarRocks cluster and a database configured.

import os
from sqlalchemy import create_engine, text

# Configure connection details via environment variables
STARROCKS_USER = os.environ.get('STARROCKS_USER', 'root')
STARROCKS_PASSWORD = os.environ.get('STARROCKS_PASSWORD', '')
STARROCKS_HOST = os.environ.get('STARROCKS_HOST', 'localhost')
STARROCKS_PORT = os.environ.get('STARROCKS_PORT', '9030')
STARROCKS_DATABASE = os.environ.get('STARROCKS_DATABASE', 'mydatabase')

# Construct connection string
connection_string = (
    f"starrocks://{STARROCKS_USER}:"  # User and optional password
    f"{STARROCKS_PASSWORD}@{STARROCKS_HOST}:{STARROCKS_PORT}/"
    f"{STARROCKS_DATABASE}"
)

# Create a SQLAlchemy engine
engine = create_engine(connection_string)

try:
    # Establish a connection and execute a basic query
    with engine.connect() as connection:
        print("Connection successful!")
        # Ensure 'mytable' exists in 'mydatabase' for this example
        result = connection.execute(text("SELECT 1 + 1")).scalar()
        print(f"Query result: {result}")
        
        # Example: Fetching data from a table (uncomment and replace if 'mytable' exists)
        # rows = connection.execute(text("SELECT * FROM mytable LIMIT 2")).fetchall()
        # print(rows)

except Exception as e:
    print(f"An error occurred: {e}")

view raw JSON →