Quick Start¶
This guide gets sqlalchemy-pytibero running quickly with both SQLAlchemy Core and ORM.
Install¶
Optional: install with driver extra.
Connection URL¶
Use the Tibero dialect name:
Defaults from TiberoDialect.create_connect_args():
host:localhostport:8629user:tiberopassword: empty stringdatabase: empty string
SQLAlchemy Core example¶
from sqlalchemy import Column, Integer, MetaData, String, Table, create_engine, select
engine = create_engine("tibero://tibero:password@localhost:8629/TESTDB", echo=True)
metadata = MetaData()
users = Table(
"users",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(100), nullable=False),
)
metadata.create_all(engine)
with engine.begin() as conn:
conn.execute(users.insert(), [{"name": "alice"}, {"name": "bob"}])
with engine.connect() as conn:
rows = conn.execute(select(users.c.id, users.c.name)).all()
for row in rows:
print(row)
SQLAlchemy ORM example¶
from sqlalchemy import Integer, String, create_engine, select
from sqlalchemy.orm import DeclarativeBase, Mapped, Session, mapped_column
class Base(DeclarativeBase):
pass
class Account(Base):
__tablename__ = "account"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(100), nullable=False)
engine = create_engine("tibero://tibero:password@localhost:8629/TESTDB")
Base.metadata.create_all(engine)
with Session(engine) as session:
session.add(Account(name="first"))
session.commit()
account = session.scalar(select(Account).where(Account.name == "first"))
account.name = "updated"
session.commit()
session.delete(account)
session.commit()
Architecture¶
mermaid
flowchart LR
app[Application Code] --> sa[SQLAlchemy Core / ORM]
sa --> dialect[sqlalchemy-pytibero\nTiberoDialect]
dialect --> dbapi[pytibero DB-API]
dbapi --> tibero[Tibero Database]
Driver import error
TiberoDialect.import_dbapi() imports pytibero directly. If pytibero is missing, engine creation fails immediately.
Start simple
Validate connectivity first with SELECT 1 FROM DUAL before creating metadata and running migrations.
No RETURNING support
insert_returning, update_returning, and delete_returning are disabled in this dialect. See Limitations.