docs/v3/api-ref/python/prefect-server-database-interface.mdx
prefect.server.database.interfaceDBSingleton <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L21" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Ensures that only one database interface is created per unique key
PrefectDBInterface <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L55" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>An interface for backend-specific SqlAlchemy actions and ORM models.
The REST API can be configured to run against different databases in order maintain performance at different scales. This interface integrates database- and dialect- specific configuration into a unified interface that the orchestration engine runs against.
Methods:
Agent <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L270" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Agent(self) -> type[orm_models.Agent]
An agent model
Artifact <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L205" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Artifact(self) -> type[orm_models.Artifact]
An artifact orm model
ArtifactCollection <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L210" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>ArtifactCollection(self) -> type[orm_models.ArtifactCollection]
An artifact collection orm model
Automation <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L315" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Automation(self) -> type[orm_models.Automation]
An automation model
AutomationBucket <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L320" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>AutomationBucket(self) -> type[orm_models.AutomationBucket]
An automation bucket model
AutomationEventFollower <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L337" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>AutomationEventFollower(self) -> type[orm_models.AutomationEventFollower]
A model capturing one event following another event
AutomationRelatedResource <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L325" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>AutomationRelatedResource(self) -> type[orm_models.AutomationRelatedResource]
An automation related resource model
Base <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L175" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Base(self) -> type[orm_models.Base]
Base class for orm models
BlockDocument <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L290" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>BlockDocument(self) -> type[orm_models.BlockDocument]
A block document model
BlockDocumentReference <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L295" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>BlockDocumentReference(self) -> type[orm_models.BlockDocumentReference]
A block document reference model
BlockSchema <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L280" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>BlockSchema(self) -> type[orm_models.BlockSchema]
A block schema model
BlockSchemaReference <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L285" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>BlockSchemaReference(self) -> type[orm_models.BlockSchemaReference]
A block schema reference model
BlockType <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L275" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>BlockType(self) -> type[orm_models.BlockType]
A block type model
CompositeTriggerChildFiring <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L330" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>CompositeTriggerChildFiring(self) -> type[orm_models.CompositeTriggerChildFiring]
A model capturing a composite trigger's child firing
ConcurrencyLimit <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L250" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>ConcurrencyLimit(self) -> type[orm_models.ConcurrencyLimit]
A concurrency model
ConcurrencyLimitV2 <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L255" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>ConcurrencyLimitV2(self) -> type[orm_models.ConcurrencyLimitV2]
A v2 concurrency model
Configuration <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L300" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Configuration(self) -> type[orm_models.Configuration]
An configuration model
CsrfToken <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L260" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>CsrfToken(self) -> type[orm_models.CsrfToken]
A csrf token model
Deployment <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L220" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Deployment(self) -> type[orm_models.Deployment]
A deployment orm model
DeploymentSchedule <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L225" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>DeploymentSchedule(self) -> type[orm_models.DeploymentSchedule]
A deployment schedule orm model
Event <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L342" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Event(self) -> type[orm_models.Event]
An event model
EventResource <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L347" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>EventResource(self) -> type[orm_models.EventResource]
An event resource model
Flow <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L180" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Flow(self) -> type[orm_models.Flow]
A flow orm model
FlowRun <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L185" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>FlowRun(self) -> type[orm_models.FlowRun]
A flow run orm model
FlowRunInput <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L310" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>FlowRunInput(self) -> type[orm_models.FlowRunInput]
A flow run input model
FlowRunState <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L190" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>FlowRunState(self) -> type[orm_models.FlowRunState]
A flow run state orm model
Log <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L245" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Log(self) -> type[orm_models.Log]
A log orm model
SavedSearch <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L230" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>SavedSearch(self) -> type[orm_models.SavedSearch]
A saved search orm model
TaskRun <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L195" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>TaskRun(self) -> type[orm_models.TaskRun]
A task run orm model
TaskRunState <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L200" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>TaskRunState(self) -> type[orm_models.TaskRunState]
A task run state orm model
TaskRunStateCache <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L215" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>TaskRunStateCache(self) -> type[orm_models.TaskRunStateCache]
A task run state cache orm model
Variable <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L305" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Variable(self) -> type[orm_models.Variable]
A variable model
WorkPool <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L235" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>WorkPool(self) -> type[orm_models.WorkPool]
A work pool orm model
WorkQueue <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L265" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>WorkQueue(self) -> type[orm_models.WorkQueue]
A work queue model
Worker <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L240" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>Worker(self) -> type[orm_models.Worker]
A worker process orm model
create_db <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L75" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>create_db(self) -> None
Create the database
dialect <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L171" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>dialect(self) -> type[sa.engine.Dialect]
drop_db <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L79" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>drop_db(self) -> None
Drop the database by removing all tables directly.
This reflects the actual database schema and drops every table rather than running all Alembic downgrade migrations in reverse. Running downgrades is fragile because individual migration downgrade steps may fail on real-world data (e.g. re-adding a foreign key constraint when orphaned references exist). Dropping tables directly is both faster and more robust.
Reflection is used instead of Base.metadata.drop_all() so that
tables created by migrations but not tracked in the ORM (e.g.
deployment_version, alembic_version) are also removed.
engine <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L133" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>engine(self) -> AsyncEngine
Provides a SqlAlchemy engine against a specific database.
is_db_connectable <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L121" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>is_db_connectable(self) -> bool
Returns boolean indicating if the database is connectable. This method is used to determine if the server is ready to accept requests.
run_migrations_downgrade <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L117" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>run_migrations_downgrade(self, revision: str = '-1') -> None
Run all downgrade migrations
run_migrations_upgrade <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L113" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>run_migrations_upgrade(self) -> None
Run all upgrade migrations
session <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L141" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>session(self) -> AsyncSession
Provides a SQLAlchemy session.
session_context <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/interface.py#L149" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>session_context(self, begin_transaction: bool = False, with_for_update: bool = False)
Provides a SQLAlchemy session and a context manager for opening/closing the underlying connection.
Args:
begin_transaction: if True, the context manager will begin a SQL transaction.
Exiting the context manager will COMMIT or ROLLBACK any changes.