Skip to content

Query Services

The most of the time you will never initiate these services directly, you will use Container to register or get the instances of these services instead:

amsdal_glue.services.DefaultSchemaQueryService

Bases: SchemaQueryService

DefaultSchemaQueryService is responsible for executing schema query operations.

Example

Here is an example to run a schema query operation:

from amsdal_glue import init_default_containers
from amsdal_glue import Container
from amsdal_glue import Conditions, Condition, FieldReference, FieldLookup, Value, Field
from amsdal_glue import SchemaQueryOperation
from amsdal_glue.services import SchemaQueryService

# Register default containers
init_default_containers()

# Get the registered DefaultSchemaQueryService
service = Container.services.get(SchemaQueryService)

# Query `users` schema
service.execute(
    SchemaQueryOperation(
        filters=Conditions(
            Condition(
                field=FieldReference(field=Field(name='name'), table_name='amsdal_schema_registry'),
                lookup=FieldLookup.EQ,
                value=Value('users'),
            )
        ),
    ),
)

Note, the amsdal_schema_registry is reserved AMSDAL Glue name of the schema registry table. Use it to filter the schemas by name.

execute

execute(query_op)

Executes the given schema query operation.

Parameters:

Name Type Description Default
query_op SchemaQueryOperation

The schema query operation to be executed.

required

Returns:

Name Type Description
SchemaResult SchemaResult

The result of the schema query operation execution.

amsdal_glue.services.DefaultDataQueryService

Bases: DataQueryService

DefaultDataQueryService is responsible for executing data query operations.

Example

Here is an example to run a data query operation:

from amsdal_glue import init_default_containers
from amsdal_glue import Container
from amsdal_glue import FieldReference, FieldLookup, Value, Field
from amsdal_glue import DataQueryOperation
from amsdal_glue.services import DataQueryService

# Register default containers
init_default_containers()

# Get the registered DefaultDataQueryService
service = Container.services.get(DataQueryService)

# Query `users` schema and get only `first_name` and `last_name` fields
service.execute(
    DataQueryOperation(
        query=QueryStatement(
            table=SchemaReference(name='users', version=Version.LATEST),
            only=[
                FieldReference(field=Field(name='first_name'), table_name='users'),
                FieldReference(field=Field(name='last_name'), table_name='users'),
            ],
        ),
    ),
)

execute

execute(query_op)

Executes the given data query operation.

Parameters:

Name Type Description Default
query_op DataQueryOperation

The data query operation to be executed.

required

Returns:

Name Type Description
DataResult DataResult

The result of the data query operation execution.