sync

Sync SQLAlchemy configuration module.

class advanced_alchemy.config.sync.AlembicSyncConfig[source]

Bases: GenericAlembicConfig

Configuration for Alembic’s synchronous migrations.

For details see: https://alembic.sqlalchemy.org/en/latest/api/config.html

__init__(script_config='alembic.ini', version_table_name='alembic_versions', version_table_schema=None, script_location='migrations', toml_file=None, user_module_prefix='sa.', render_as_batch=True, compare_type=False, template_path='/home/runner/work/advanced-alchemy/advanced-alchemy/advanced_alchemy/alembic/templates')
class advanced_alchemy.config.sync.SQLAlchemySyncConfig[source]

Bases: GenericSQLAlchemyConfig[Engine, Session, sessionmaker[Session]]

Synchronous SQLAlchemy Configuration.

Note

The alembic configuration options are documented in the Alembic documentation.

Example

Basic sync configuration:

config = SQLAlchemySyncConfig(
    connection_string="postgresql://user:pass@localhost/db",
)

Configuration with read/write routing:

from advanced_alchemy.config.routing import RoutingConfig

config = SQLAlchemySyncConfig(
    routing_config=RoutingConfig(
        primary_connection_string="postgresql://user:pass@primary/db",
        read_replicas=["postgresql://user:pass@replica/db"],
    ),
)
create_engine_callable(**kwargs)

Callable that creates an Engine instance or instance of its subclass.

Parameters:
  • url (Union[str, _url.URL])

  • kwargs (Any)

Return type:

Engine

session_config: SyncSessionConfig

Configuration options for the sessionmaker.

session_maker_class

Sessionmaker class to use.

alias of sessionmaker

alembic_config: AlembicSyncConfig

Configuration for the SQLAlchemy Alembic migrations.

The configuration options are documented in the Alembic documentation.

routing_config: RoutingConfig | None = None

Optional read/write routing configuration.

When provided, enables automatic routing of read operations to replicas and write operations to the primary database.

Note

When using routing_config, do not set connection_string. The primary connection is specified in the routing config.

__init__(create_engine_callable=<function create_engine>, session_config=<factory>, session_maker_class=<class 'sqlalchemy.orm.session.sessionmaker'>, connection_string=None, engine_config=<factory>, session_maker=None, engine_instance=None, create_all=False, metadata=None, bind_key=None, enable_touch_updated_timestamp_listener=True, enable_file_object_listener=True, file_object_raise_on_error=True, alembic_config=<factory>, routing_config=None)
create_session_maker()[source]

Get a session maker.

If routing is configured, returns a routing-aware session maker. Otherwise, returns a standard session maker.

Returns:

A callable that creates session instances.

Return type:

Callable[[], Session]

get_session()[source]

Get a session context manager.

Yields:

Generator[sqlalchemy.orm.Session, None, None] – A context manager yielding an active SQLAlchemy Session.

Return type:

Generator[Session, None, None]

Examples

Using the session context manager:

>>> with config.get_session() as session:
...     session.execute(...)
Return type:

Generator[Session, None, None]

class advanced_alchemy.config.sync.SyncSessionConfig[source]

Bases: GenericSessionConfig[Connection, Engine, Session]

Configuration for synchronous SQLAlchemy sessions.

__init__(autobegin=<class 'advanced_alchemy.utils.dataclass.Empty'>, autoflush=<class 'advanced_alchemy.utils.dataclass.Empty'>, bind=<class 'advanced_alchemy.utils.dataclass.Empty'>, binds=<class 'advanced_alchemy.utils.dataclass.Empty'>, class_=<class 'advanced_alchemy.utils.dataclass.Empty'>, expire_on_commit=<class 'advanced_alchemy.utils.dataclass.Empty'>, info=<class 'advanced_alchemy.utils.dataclass.Empty'>, join_transaction_mode=<class 'advanced_alchemy.utils.dataclass.Empty'>, query_cls=<class 'advanced_alchemy.utils.dataclass.Empty'>, twophase=<class 'advanced_alchemy.utils.dataclass.Empty'>)