Data Models¶
This section covers Athena query execution models and configuration classes.
Query Execution¶
- class pyathena.model.AthenaQueryExecution(response: dict[str, Any])[source]¶
Represents an Athena query execution with status and metadata.
This class encapsulates information about a query execution in Amazon Athena, including its current state, statistics, error information, and result metadata. It’s primarily used internally by PyAthena cursors but can be useful for monitoring and debugging query execution.
- Query States:
QUEUED: Query is waiting to be executed
RUNNING: Query is currently executing
SUCCEEDED: Query completed successfully
FAILED: Query execution failed
CANCELLED: Query was cancelled
- Statement Types:
DDL: Data Definition Language (CREATE, DROP, ALTER)
DML: Data Manipulation Language (SELECT, INSERT, UPDATE, DELETE)
UTILITY: Utility statements (SHOW, DESCRIBE, EXPLAIN)
Example
>>> # Typically accessed through cursor execution >>> cursor.execute("SELECT COUNT(*) FROM my_table") >>> query_execution = cursor._last_query_execution # Internal access >>> print(f"Query ID: {query_execution.query_id}") >>> print(f"State: {query_execution.state}") >>> print(f"Data scanned: {query_execution.data_scanned_in_bytes} bytes")
See also
AWS Athena QueryExecution API reference: https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecution.html
- S3_ACL_OPTION_BUCKET_OWNER_FULL_CONTROL = 'BUCKET_OWNER_FULL_CONTROL'¶
- class pyathena.model.AthenaCalculationExecution(response: dict[str, Any])[source]¶
Represents a complete Athena calculation execution with status and results.
This class extends AthenaCalculationExecutionStatus to include additional information about the calculation execution, including session details, working directory, and result locations in S3.
Attributes are inherited from AthenaCalculationExecutionStatus for state and timing information.
See also
AWS Athena CalculationExecution API reference: https://docs.aws.amazon.com/athena/latest/APIReference/API_CalculationSummary.html
- class pyathena.model.AthenaCalculationExecutionStatus(response: dict[str, Any])[source]¶
Status information for an Athena calculation execution.
This class represents the current state and statistics of a calculation execution in Amazon Athena’s notebook or interactive session environment. It tracks the calculation’s lifecycle from creation through completion.
- Calculation States:
CREATING: Calculation is being created
CREATED: Calculation has been created
QUEUED: Calculation is waiting to execute
RUNNING: Calculation is currently executing
CANCELING: Calculation is being cancelled
CANCELED: Calculation was cancelled
COMPLETED: Calculation completed successfully
FAILED: Calculation execution failed
See also
AWS Athena CalculationExecutionStatus API reference: https://docs.aws.amazon.com/athena/latest/APIReference/API_CalculationStatus.html
Session Management¶
- class pyathena.model.AthenaSessionStatus(response: dict[str, Any])[source]¶
Status information for an Athena interactive session.
This class represents the current state of an interactive session in Amazon Athena, used for notebook and Spark workloads. Sessions provide a persistent environment for running multiple calculations.
- Session States:
CREATING: Session is being created
CREATED: Session has been created
IDLE: Session is idle and ready for calculations
BUSY: Session is executing a calculation
TERMINATING: Session is being terminated
TERMINATED: Session has been terminated
DEGRADED: Session is in a degraded state
FAILED: Session creation or execution failed
See also
AWS Athena Session API reference: https://docs.aws.amazon.com/athena/latest/APIReference/API_SessionStatus.html
Database and Table Metadata¶
- class pyathena.model.AthenaDatabase(response)[source]¶
Represents an Athena database (schema) and its metadata.
This class encapsulates information about a database in the AWS Glue Data Catalog that is accessible through Amazon Athena. Databases serve as containers for tables and views.
See also
AWS Athena Database API reference: https://docs.aws.amazon.com/athena/latest/APIReference/API_Database.html
- class pyathena.model.AthenaTableMetadata(response)[source]¶
Represents comprehensive metadata for an Athena table.
This class contains detailed information about a table in the AWS Glue Data Catalog, including columns, partition keys, storage format, serialization library, and various table properties.
The class provides convenient properties for accessing common table attributes like location, file format, compression, and SerDe configuration.
See also
AWS Athena TableMetadata API reference: https://docs.aws.amazon.com/athena/latest/APIReference/API_TableMetadata.html
File Formats and Compression¶
- class pyathena.model.AthenaFileFormat[source]¶
Constants and utilities for Athena supported file formats.
This class provides constants for file formats supported by Amazon Athena and utility methods to check format types. These are commonly used when creating tables or configuring UNLOAD operations.
- Supported formats:
SEQUENCEFILE: Hadoop SequenceFile format
TEXTFILE: Plain text files (default)
RCFILE: Record Columnar File format
ORC: Optimized Row Columnar format
PARQUET: Apache Parquet columnar format
AVRO: Apache Avro format
ION: Amazon Ion format
Example
>>> from pyathena.model import AthenaFileFormat >>> >>> # Check if format is Parquet >>> if AthenaFileFormat.is_parquet("PARQUET"): ... print("Using columnar format") >>> >>> # Use in UNLOAD operations >>> format_type = AthenaFileFormat.FILE_FORMAT_PARQUET >>> sql = f"UNLOAD (...) TO 's3://bucket/path/' WITH (format = '{format_type}')" >>> cursor.execute(sql)
See also
AWS Documentation on supported file formats: https://docs.aws.amazon.com/athena/latest/ug/supported-serdes.html
- class pyathena.model.AthenaCompression[source]¶
Constants and utilities for Athena supported compression formats.
This class provides constants for compression formats supported by Amazon Athena and utility methods to validate compression types. These are commonly used when creating tables, configuring UNLOAD operations, or optimizing data storage.
- Supported compression formats:
BZIP2: BZIP2 compression
DEFLATE: DEFLATE compression
GZIP: GZIP compression (most common)
LZ4: LZ4 fast compression
LZO: LZO compression
SNAPPY: Snappy compression (good for Parquet)
ZLIB: ZLIB compression
ZSTD: Zstandard compression
Example
>>> from pyathena.model import AthenaCompression >>> >>> # Validate compression format >>> if AthenaCompression.is_valid("GZIP"): ... print("Valid compression format") >>> >>> # Use in UNLOAD operations >>> compression = AthenaCompression.COMPRESSION_GZIP >>> sql = f"UNLOAD (...) TO 's3://bucket/path/' WITH (compression = '{compression}')" >>> cursor.execute(sql)
See also
AWS Documentation on compression formats: https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html
Best practices for data compression in Athena: https://docs.aws.amazon.com/athena/latest/ug/compression-support.html