SQLAlchemy dialect for SAP HANA

4.5.0 · active · verified Sun Apr 12

SQLAlchemy dialect for SAP HANA. It enables Python applications to connect to SAP HANA databases using SQLAlchemy's ORM and Core features, leveraging the `hdbcli` driver for connectivity. The library is currently at version 4.5.0 and follows semantic versioning, indicating that breaking changes are introduced only in major releases.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to establish a connection to an SAP HANA database using `sqlalchemy-hana` and execute a simple SQL query. It uses environment variables for connection parameters for security and flexibility. Alternatively, an HDB User Store key can be used with `hana://userkey=my_user_store_key`.

import os
from sqlalchemy import create_engine, text

# Environment variables for connection details (replace with your actual values or user store key)
HANA_USER = os.environ.get('HANA_USER', 'your_username')
HANA_PASSWORD = os.environ.get('HANA_PASSWORD', 'your_password')
HANA_HOST = os.environ.get('HANA_HOST', 'your_hana_host')
HANA_PORT = os.environ.get('HANA_PORT', '30015') # Default port for SAP HANA
HANA_TENANT_DB = os.environ.get('HANA_TENANT_DB', '') # Optional: for tenant databases
HANA_USERKEY = os.environ.get('HANA_USERKEY', '') # Optional: for hdbuserstore key

connection_string = f"hana://{HANA_USER}:{HANA_PASSWORD}@{HANA_HOST}:{HANA_PORT}"
if HANA_TENANT_DB:
    connection_string += f"/{HANA_TENANT_DB}"

if HANA_USERKEY:
    connection_string = f"hana://userkey={HANA_USERKEY}"


try:
    # Create an engine to connect to SAP HANA
    engine = create_engine(connection_string, echo=False)

    # Establish a connection and execute a simple query
    with engine.connect() as connection:
        result = connection.execute(text("SELECT 'Hello from SAP HANA!' AS greeting FROM DUMMY"))
        for row in result:
            print(row.greeting)

    print("Successfully connected to SAP HANA and executed a query.")

except Exception as e:
    print(f"An error occurred: {e}")
    print("Please ensure HANA_USER, HANA_PASSWORD, HANA_HOST, HANA_PORT, "
          "and hdbcli are correctly configured or HANA_USERKEY is set.")

view raw JSON →