Back to Prefect

interface

docs/v3/api-ref/python/prefect-server-database-interface.mdx

3.6.30.dev314.9 KB
Original Source

prefect.server.database.interface

Classes

DBSingleton <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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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>

python
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.