SQLAlchemy OceanBase Dialect
A SQLAlchemy dialect for OceanBase Oracle mode, providing seamless integration between SQLAlchemy and OceanBase database.
Features
- Full Compatibility: Supports SQLAlchemy 1.3.x and 2.0+
- Optimized Performance: Enhanced SQL queries specifically optimized for OceanBase
- Advanced Reflection: Enhanced constraint reflection with OceanBase-specific optimizations
- Connection Safety: Secure connection string building utilities
Installation
From PyPI (Recommended)
pip install oceanbase-sqlalchemy
From Source
git clone https://github.com/oceanbase/ecology-plugins.git
cd ecology-plugins/oceanbase-sqlalchemy-plugin
pip install -e .
Quick Start
Basic Usage
from sqlalchemy import create_engine, text
from oceanbase_sqlalchemy.utils import build_safe_connection_string
# Build connection string
connection_string = build_safe_connection_string(
username="your_username",
password="your_password",
host="your_host",
port="2881",
service_name="your_service_name"
)
# Create engine
engine = create_engine(connection_string)
# Test connection
with engine.connect() as conn:
result = conn.execute(text("SELECT 1 FROM DUAL"))
print(result.fetchone())
Using with SQLAlchemy ORM
from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table
from sqlalchemy.ext.declarative import declarative_base
from oceanbase_sqlalchemy.utils import build_safe_connection_string
# Create engine
connection_string = build_safe_connection_string(
username="your_username",
password="your_password",
host="your_host",
port="2881",
service_name="your_service_name"
)
engine = create_engine(connection_string)
# Define model
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
email = Column(String(100))
# Create tables
Base.metadata.create_all(engine)
Requirements
- Python 3.7+
- SQLAlchemy 1.3.x or 2.0+
- cx_Oracle (for Oracle mode)
Contributing
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Support
- Issues: GitHub Issues
- Community: OceanBase Community
FAQ
Q: How to connect to OceanBase MySQL mode?
A: The current version only supports OceanBase Oracle mode. For MySQL mode, please use the standard MySQL driver.
Q: Which SQLAlchemy versions are supported?
A: Supports SQLAlchemy 1.3.x and 2.0+ versions.
Troubleshooting
Connection Issues
- Check network connection and firewall settings
- Verify username, password and service name
- Confirm the port number is correct (default 2881)
Performance Issues
- Enable SQL logging (
echo=True) to view executed SQL - Analyze slow query logs
Compatibility Issues
- Ensure using supported SQLAlchemy version
- Check cx_Oracle driver version
- Review OceanBase version compatibility
Release files for oceanbase-sqlalchemy 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| oceanbase_sqlalchemy-0.7.0.tar.gz | 16.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oceanbase_sqlalchemy-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.3 kB
Release files / oceanbase_sqlalchemy-0.7.0.tar.gz
| Download URL | oceanbase_sqlalchemy-0.7.0.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c54a6d95a659e55aa089933eb03e1ef6213c745674eb365f9b3e45e07f0caefa
|
|
BLAKE2b-256 checksum How to use checksums |
30188ac2529c49d834b4389b56762f34ce1cb08c468cf9d9a8eb88a474647822
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 28, 2026.
Transparency logRelease files / oceanbase_sqlalchemy-0.7.0-py3-none-any.whl
| Download URL | oceanbase_sqlalchemy-0.7.0-py3-none-any.whl |
|---|---|
| Size | 18.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
815af6dd5ed4f0f79dab82c7e780e3a1786e2d4dbd0eb268770256a5f0da5dcc
|
|
BLAKE2b-256 checksum How to use checksums |
31d9bea5aff46eb07f39ba427b07cb1b2271939cf65ba2fa392528391248e0ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 28, 2026.
Transparency log