SQLAlchemy#
One can either register declared objects directly on a declarative base:
# Using sqlalchemy's normal declarative base mechanism
from sqlalchemy.orm import declarative_base
from sqlalchemy_declarative_extensions import declarative_database
_Base = declarative_base()
@declarative_database
class Base(_Base):
__abstract__ = True
schemas = ...
roles = ...
# Or using sqlalchemy's new decorator as of 1.4.
from sqlalchemy.orm import declarative_base
from sqlalchemy_declarative_extensions import as_declarative
@declarative_database
@as_declarative()
class Base(_Base):
schemas = ...
roles = ...
Or on the metadata directly, for example when not using the declarative style API of SQLAlchemy.
from sqlalchemy import MetaData
from sqlalchemy_declarative_extensions import declare_database
metadata = MetaData()
declare_database(
metadata,
schemas=...,
roles=...,
)
Event Registration#
Additionally, you can opt into registration of sqlalchemy’s creation-level
events, i.e. during a metadata.create_all
.
from sqlalchemy_declarative_extensions import register_sqlalchemy_events
register_sqlalchemy_events(schemas=True, roles=True, grants=True, rows=False)
Note, all available options are disabled by default! We assume this option will most often be used in tests, where it’s not clear that all options can be safely used.