> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# query_components

# `prefect.server.database.query_components`

## Classes

### `FlowRunGraphV2Node` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L45](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L45)</sup>

### `BaseQueryComponents` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L67](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L67)</sup>

Abstract base class used to inject dialect-specific SQL operations into Prefect.

**Methods:**

#### `cast_to_json` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L98](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L98)</sup>

```python theme={null}
cast_to_json(self, json_obj: sa.ColumnElement[T]) -> sa.ColumnElement[T]
```

casts to JSON object if necessary

#### `clear_configuration_value_cache_for_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L375](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L375)</sup>

```python theme={null}
clear_configuration_value_cache_for_key(self, key: str) -> None
```

Removes a configuration key from the cache.

#### `flow_run_graph_v2` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L403](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L403)</sup>

```python theme={null}
flow_run_graph_v2(self, db: PrefectDBInterface, session: AsyncSession, flow_run_id: UUID, since: DateTime, max_nodes: int, max_artifacts: int) -> Graph
```

Returns the query that selects all of the nodes and edges for a flow run graph (version 2).

#### `get_scheduled_flow_runs_from_work_pool` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L255](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L255)</sup>

```python theme={null}
get_scheduled_flow_runs_from_work_pool(self, db: PrefectDBInterface, session: AsyncSession, limit: Optional[int] = None, worker_limit: Optional[int] = None, queue_limit: Optional[int] = None, work_pool_ids: Optional[list[UUID]] = None, work_queue_ids: Optional[list[UUID]] = None, scheduled_before: Optional[DateTime] = None, scheduled_after: Optional[DateTime] = None, respect_queue_priorities: bool = False) -> list[schemas.responses.WorkerFlowRunResponse]
```

#### `get_scheduled_flow_runs_from_work_queues` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L123](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L123)</sup>

```python theme={null}
get_scheduled_flow_runs_from_work_queues(self, db: PrefectDBInterface, limit_per_queue: Optional[int] = None, work_queue_ids: Optional[list[UUID]] = None, scheduled_before: Optional[DateTime] = None) -> sa.Select[tuple[orm_models.FlowRun, UUID]]
```

Returns all scheduled runs in work queues, subject to provided parameters.

This query returns a `(orm_models.FlowRun, orm_models.WorkQueue.id)` pair; calling
`result.all()` will return both; calling `result.scalars().unique().all()`
will return only the flow run because it grabs the first result.

#### `insert` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L85](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L85)</sup>

```python theme={null}
insert(self, obj: type[orm_models.Base]) -> Union[postgresql.Insert, sqlite.Insert]
```

dialect-specific insert statement

#### `json_arr_agg` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L102](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L102)</sup>

```python theme={null}
json_arr_agg(self, json_array: sa.ColumnElement[Any]) -> sa.ColumnElement[Any]
```

aggregates a JSON array

#### `make_timestamp_bucket_index` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L108](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L108)</sup>

```python theme={null}
make_timestamp_bucket_index(self, timestamp: sa.ColumnElement[Any] | orm.InstrumentedAttribute[Any], start_time: datetime.datetime, interval: datetime.timedelta) -> sa.ColumnElement[int]
```

#### `read_configuration_value` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L353](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L353)</sup>

```python theme={null}
read_configuration_value(self, db: PrefectDBInterface, session: AsyncSession, key: str) -> Optional[dict[str, Any]]
```

Read a configuration value by key.

Configuration values should not be changed at run time, so retrieved
values are cached in memory.

The main use of configurations is encrypting blocks, this speeds up nested
block document queries.

#### `set_state_id_on_inserted_flow_runs_statement` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L116](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L116)</sup>

```python theme={null}
set_state_id_on_inserted_flow_runs_statement(self, inserted_flow_run_ids: Sequence[UUID], insert_flow_run_states: Iterable[dict[str, Any]]) -> sa.Update
```

#### `unique_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L76)</sup>

```python theme={null}
unique_key(self) -> tuple[Hashable, ...]
```

Returns a key used to determine whether to instantiate a new DB interface.

#### `uses_json_strings` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L94](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L94)</sup>

```python theme={null}
uses_json_strings(self) -> bool
```

specifies whether the configured dialect returns JSON as strings

### `AsyncPostgresQueryComponents` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L540](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L540)</sup>

**Methods:**

#### `cast_to_json` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L552](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L552)</sup>

```python theme={null}
cast_to_json(self, json_obj: sa.ColumnElement[T]) -> sa.ColumnElement[T]
```

#### `cast_to_json` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L98](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L98)</sup>

```python theme={null}
cast_to_json(self, json_obj: sa.ColumnElement[T]) -> sa.ColumnElement[T]
```

casts to JSON object if necessary

#### `clear_configuration_value_cache_for_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L375](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L375)</sup>

```python theme={null}
clear_configuration_value_cache_for_key(self, key: str) -> None
```

Removes a configuration key from the cache.

#### `flow_run_graph_v2` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L403](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L403)</sup>

```python theme={null}
flow_run_graph_v2(self, db: PrefectDBInterface, session: AsyncSession, flow_run_id: UUID, since: DateTime, max_nodes: int, max_artifacts: int) -> Graph
```

Returns the query that selects all of the nodes and edges for a flow run graph (version 2).

#### `get_scheduled_flow_runs_from_work_pool` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L255](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L255)</sup>

```python theme={null}
get_scheduled_flow_runs_from_work_pool(self, db: PrefectDBInterface, session: AsyncSession, limit: Optional[int] = None, worker_limit: Optional[int] = None, queue_limit: Optional[int] = None, work_pool_ids: Optional[list[UUID]] = None, work_queue_ids: Optional[list[UUID]] = None, scheduled_before: Optional[DateTime] = None, scheduled_after: Optional[DateTime] = None, respect_queue_priorities: bool = False) -> list[schemas.responses.WorkerFlowRunResponse]
```

#### `get_scheduled_flow_runs_from_work_queues` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L123](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L123)</sup>

```python theme={null}
get_scheduled_flow_runs_from_work_queues(self, db: PrefectDBInterface, limit_per_queue: Optional[int] = None, work_queue_ids: Optional[list[UUID]] = None, scheduled_before: Optional[DateTime] = None) -> sa.Select[tuple[orm_models.FlowRun, UUID]]
```

Returns all scheduled runs in work queues, subject to provided parameters.

This query returns a `(orm_models.FlowRun, orm_models.WorkQueue.id)` pair; calling
`result.all()` will return both; calling `result.scalars().unique().all()`
will return only the flow run because it grabs the first result.

#### `insert` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L543](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L543)</sup>

```python theme={null}
insert(self, obj: type[orm_models.Base]) -> postgresql.Insert
```

#### `insert` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L85](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L85)</sup>

```python theme={null}
insert(self, obj: type[orm_models.Base]) -> Union[postgresql.Insert, sqlite.Insert]
```

dialect-specific insert statement

#### `json_arr_agg` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L555](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L555)</sup>

```python theme={null}
json_arr_agg(self, json_array: sa.ColumnElement[Any]) -> sa.ColumnElement[Any]
```

#### `json_arr_agg` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L102](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L102)</sup>

```python theme={null}
json_arr_agg(self, json_array: sa.ColumnElement[Any]) -> sa.ColumnElement[Any]
```

aggregates a JSON array

#### `make_timestamp_bucket_index` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L560](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L560)</sup>

```python theme={null}
make_timestamp_bucket_index(self, timestamp: sa.ColumnElement[Any] | orm.InstrumentedAttribute[Any], start_time: datetime.datetime, interval: datetime.timedelta) -> sa.ColumnElement[int]
```

#### `make_timestamp_bucket_index` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L108](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L108)</sup>

```python theme={null}
make_timestamp_bucket_index(self, timestamp: sa.ColumnElement[Any] | orm.InstrumentedAttribute[Any], start_time: datetime.datetime, interval: datetime.timedelta) -> sa.ColumnElement[int]
```

#### `read_configuration_value` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L353](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L353)</sup>

```python theme={null}
read_configuration_value(self, db: PrefectDBInterface, session: AsyncSession, key: str) -> Optional[dict[str, Any]]
```

Read a configuration value by key.

Configuration values should not be changed at run time, so retrieved
values are cached in memory.

The main use of configurations is encrypting blocks, this speeds up nested
block document queries.

#### `set_state_id_on_inserted_flow_runs_statement` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L575](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L575)</sup>

```python theme={null}
set_state_id_on_inserted_flow_runs_statement(self, db: PrefectDBInterface, inserted_flow_run_ids: Sequence[UUID], insert_flow_run_states: Iterable[dict[str, Any]]) -> sa.Update
```

Given a list of flow run ids and associated states, set the state\_id
to the appropriate state for all flow runs

#### `set_state_id_on_inserted_flow_runs_statement` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L116](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L116)</sup>

```python theme={null}
set_state_id_on_inserted_flow_runs_statement(self, inserted_flow_run_ids: Sequence[UUID], insert_flow_run_states: Iterable[dict[str, Any]]) -> sa.Update
```

#### `unique_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L76)</sup>

```python theme={null}
unique_key(self) -> tuple[Hashable, ...]
```

Returns a key used to determine whether to instantiate a new DB interface.

#### `uses_json_strings` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L549](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L549)</sup>

```python theme={null}
uses_json_strings(self) -> bool
```

#### `uses_json_strings` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L94](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L94)</sup>

```python theme={null}
uses_json_strings(self) -> bool
```

specifies whether the configured dialect returns JSON as strings

### `UUIDList` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L763](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L763)</sup>

Map a JSON list of strings back to a list of UUIDs at the result loading stage

**Methods:**

#### `process_result_value` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L769](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L769)</sup>

```python theme={null}
process_result_value(self, value: Optional[list[Union[str, UUID]]], dialect: sa.Dialect) -> Optional[list[UUID]]
```

### `AioSqliteQueryComponents` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L777](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L777)</sup>

**Methods:**

#### `cast_to_json` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L789](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L789)</sup>

```python theme={null}
cast_to_json(self, json_obj: sa.ColumnElement[T]) -> sa.ColumnElement[T]
```

#### `cast_to_json` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L98](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L98)</sup>

```python theme={null}
cast_to_json(self, json_obj: sa.ColumnElement[T]) -> sa.ColumnElement[T]
```

casts to JSON object if necessary

#### `clear_configuration_value_cache_for_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L375](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L375)</sup>

```python theme={null}
clear_configuration_value_cache_for_key(self, key: str) -> None
```

Removes a configuration key from the cache.

#### `flow_run_graph_v2` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L403](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L403)</sup>

```python theme={null}
flow_run_graph_v2(self, db: PrefectDBInterface, session: AsyncSession, flow_run_id: UUID, since: DateTime, max_nodes: int, max_artifacts: int) -> Graph
```

Returns the query that selects all of the nodes and edges for a flow run graph (version 2).

#### `get_scheduled_flow_runs_from_work_pool` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L255](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L255)</sup>

```python theme={null}
get_scheduled_flow_runs_from_work_pool(self, db: PrefectDBInterface, session: AsyncSession, limit: Optional[int] = None, worker_limit: Optional[int] = None, queue_limit: Optional[int] = None, work_pool_ids: Optional[list[UUID]] = None, work_queue_ids: Optional[list[UUID]] = None, scheduled_before: Optional[DateTime] = None, scheduled_after: Optional[DateTime] = None, respect_queue_priorities: bool = False) -> list[schemas.responses.WorkerFlowRunResponse]
```

#### `get_scheduled_flow_runs_from_work_queues` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L123](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L123)</sup>

```python theme={null}
get_scheduled_flow_runs_from_work_queues(self, db: PrefectDBInterface, limit_per_queue: Optional[int] = None, work_queue_ids: Optional[list[UUID]] = None, scheduled_before: Optional[DateTime] = None) -> sa.Select[tuple[orm_models.FlowRun, UUID]]
```

Returns all scheduled runs in work queues, subject to provided parameters.

This query returns a `(orm_models.FlowRun, orm_models.WorkQueue.id)` pair; calling
`result.all()` will return both; calling `result.scalars().unique().all()`
will return only the flow run because it grabs the first result.

#### `insert` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L780](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L780)</sup>

```python theme={null}
insert(self, obj: type[orm_models.Base]) -> sqlite.Insert
```

#### `insert` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L85](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L85)</sup>

```python theme={null}
insert(self, obj: type[orm_models.Base]) -> Union[postgresql.Insert, sqlite.Insert]
```

dialect-specific insert statement

#### `json_arr_agg` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L792](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L792)</sup>

```python theme={null}
json_arr_agg(self, json_array: sa.ColumnElement[Any]) -> sa.ColumnElement[Any]
```

#### `json_arr_agg` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L102](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L102)</sup>

```python theme={null}
json_arr_agg(self, json_array: sa.ColumnElement[Any]) -> sa.ColumnElement[Any]
```

aggregates a JSON array

#### `make_timestamp_bucket_index` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L797](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L797)</sup>

```python theme={null}
make_timestamp_bucket_index(self, timestamp: sa.ColumnElement[Any] | orm.InstrumentedAttribute[Any], start_time: datetime.datetime, interval: datetime.timedelta) -> sa.ColumnElement[int]
```

#### `make_timestamp_bucket_index` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L108](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L108)</sup>

```python theme={null}
make_timestamp_bucket_index(self, timestamp: sa.ColumnElement[Any] | orm.InstrumentedAttribute[Any], start_time: datetime.datetime, interval: datetime.timedelta) -> sa.ColumnElement[int]
```

#### `read_configuration_value` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L353](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L353)</sup>

```python theme={null}
read_configuration_value(self, db: PrefectDBInterface, session: AsyncSession, key: str) -> Optional[dict[str, Any]]
```

Read a configuration value by key.

Configuration values should not be changed at run time, so retrieved
values are cached in memory.

The main use of configurations is encrypting blocks, this speeds up nested
block document queries.

#### `set_state_id_on_inserted_flow_runs_statement` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L813](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L813)</sup>

```python theme={null}
set_state_id_on_inserted_flow_runs_statement(self, db: PrefectDBInterface, inserted_flow_run_ids: Sequence[UUID], insert_flow_run_states: Iterable[dict[str, Any]]) -> sa.Update
```

Given a list of flow run ids and associated states, set the state\_id
to the appropriate state for all flow runs

#### `set_state_id_on_inserted_flow_runs_statement` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L116](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L116)</sup>

```python theme={null}
set_state_id_on_inserted_flow_runs_statement(self, inserted_flow_run_ids: Sequence[UUID], insert_flow_run_states: Iterable[dict[str, Any]]) -> sa.Update
```

#### `unique_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L76)</sup>

```python theme={null}
unique_key(self) -> tuple[Hashable, ...]
```

Returns a key used to determine whether to instantiate a new DB interface.

#### `uses_json_strings` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L786](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L786)</sup>

```python theme={null}
uses_json_strings(self) -> bool
```

#### `uses_json_strings` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query\_components.py#L94](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/database/query_components.py#L94)</sup>

```python theme={null}
uses_json_strings(self) -> bool
```

specifies whether the configured dialect returns JSON as strings
