Skip to main content

datus-odps

ODPS (MaxCompute) database adapter for Datus.

Installation

pip install datus-odps

This will automatically install the required dependencies:

  • datus-agent
  • pyodps
  • pandas
  • pyarrow

Usage

The adapter is automatically registered with Datus when installed. Configure your database connection in your Datus configuration:

database:
  type: odps
  access_id: your_access_key_id
  access_key: your_access_key_secret
  project: your_project_name
  endpoint: https://service.cn-shanghai.maxcompute.aliyun.com/api

Or use programmatically:

from datus_odps import ODPSConnector, ODPSConfig

# Create connector with config object
config = ODPSConfig(
    access_id="your_access_key_id",
    access_key="your_access_key_secret",
    project="your_project_name",
    endpoint="https://service.cn-shanghai.maxcompute.aliyun.com/api"
)
connector = ODPSConnector(config=config)

# Or create connector with dict
connector = ODPSConnector(config={
    "access_id": "your_access_key_id",
    "access_key": "your_access_key_secret",
    "project": "your_project_name",
    "endpoint": "https://service.cn-shanghai.maxcompute.aliyun.com/api"
})

# Test connection
connector.test_connection()

# Execute query
result = connector.execute_query("SELECT * FROM your_table LIMIT 10")
print(result.sql_return)

# Get table list
tables = connector.get_tables()
print(f"Tables: {tables}")

# Get table schema
schema = connector.get_schema(table_name="your_table")
for column in schema:
    print(f"{column['name']}: {column['type']}")

# Get tables with DDL
tables_with_ddl = connector.get_tables_with_ddl()
for table_info in tables_with_ddl:
    print(f"Table: {table_info['table_name']}")
    print(f"DDL: {table_info['definition']}")

# Get sample rows
samples = connector.get_sample_rows(tables=["your_table"], top_n=5)
for sample in samples:
    print(f"Sample from {sample['table_name']}:")
    print(sample['sample_rows'])

Configuration Options

The ODPSConfig class supports the following parameters:

  • access_id (required): Aliyun Access Key ID
  • access_key (required): Aliyun Access Key Secret
  • project (required): ODPS project name
  • endpoint (required): ODPS service endpoint (e.g., https://service.cn-shanghai.maxcompute.aliyun.com/api)
  • timeout_seconds (optional): Connection timeout in seconds (default: 30)
  • use_sqa (optional): Whether to use SQA (SQL Query Acceleration)
  • quota_name (optional): Quota name for resource management

Features

  • Full CRUD operations (SELECT, INSERT, UPDATE, DELETE)
  • DDL execution (CREATE, ALTER, DROP)
  • Metadata retrieval (tables, schemas)
  • Sample data extraction
  • Multiple result formats (pandas, arrow, csv, list)
  • Connection management
  • Comprehensive error handling
  • Project-based namespace support (ODPS uses projects as databases)

ODPS-Specific Notes

  • Project as Database: ODPS uses projects as the main namespace (similar to databases in traditional SQL databases)
  • Table Naming: Tables are referenced as project.table_name
  • Schemas: ODPS may support schemas in newer versions, but typically uses projects as the main namespace
  • SQL Execution: All SQL queries are executed through PyODPS SDK

Requirements

  • Python >= 3.12
  • ODPS (MaxCompute) account with valid Access Key credentials
  • datus-agent >= 0.2.1
  • pyodps >= 0.11.0
  • pandas >= 2.0.0
  • pyarrow >= 10.0.0

License

Apache License 2.0

Metadata

Release files for datus-odps 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for datus-odps 0.1.0
File Size Uploaded
datus_odps-0.1.0.tar.gz 16.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for datus-odps 0.1.0
File Interpreter ABI Platform
datus_odps-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.4 kB

Release files / datus_odps-0.1.0.tar.gz

Download URL datus_odps-0.1.0.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ac0144d069917f2ea59f6110155503c6963f22ef3adf5d6797d34b8ad4d83390
BLAKE2b-256 checksum
How to use checksums
5e7299b13c16efd3de125e520ac14cd5333ed4e792a1d7c44bdb1321008acf2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.6

Release files / datus_odps-0.1.0-py3-none-any.whl

Download URL datus_odps-0.1.0-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e10504d33a7e9b6b7ce346b5f35508180f9e6a5ee87264bc36cd9e2c0cbba6a7
BLAKE2b-256 checksum
How to use checksums
cb39c9b31a04de4ac7b728de8027416b5e7665925c6f682448d529df98771b56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.6

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page