Microsoft Azure Data Tables Client Library for Python
npx @tessl/cli install tessl/pypi-azure-data-tables@12.7.0Microsoft Azure Data Tables Client Library for Python provides a comprehensive interface for interacting with Azure Tables, a NoSQL data storage service. It supports both Azure Storage and Azure Cosmos DB accounts, enabling scalable data storage with simple CRUD operations, batch transactions, and powerful querying capabilities.
pip install azure-data-tablesfrom azure.data.tables import TableServiceClient, TableClientFor entity operations:
from azure.data.tables import TableEntity, EntityProperty, EdmTypeFor async operations:
from azure.data.tables.aio import TableServiceClient, TableClientfrom azure.data.tables import TableServiceClient, TableClient, TableEntity
# Initialize service client with connection string
service_client = TableServiceClient.from_connection_string(
conn_str="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey"
)
# Create a table
table_client = service_client.create_table(table_name="mytable")
# Create an entity
entity = TableEntity()
entity["PartitionKey"] = "pk001"
entity["RowKey"] = "rk001"
entity["Name"] = "John Doe"
entity["Age"] = 30
# Insert the entity
table_client.create_entity(entity)
# Query entities
entities = table_client.query_entities(
query_filter="PartitionKey eq 'pk001'",
select=["Name", "Age"]
)
for entity in entities:
print(f"Name: {entity['Name']}, Age: {entity['Age']}")The Azure Data Tables library follows a hierarchical client architecture:
This design enables efficient resource management, connection pooling, and both synchronous and asynchronous programming patterns for high-performance applications.
Account-level operations including table management, service configuration, analytics, and CORS settings. Provides comprehensive service administration capabilities.
class TableServiceClient:
def __init__(self, endpoint: str, credential=None, **kwargs): ...
def create_table(self, table_name: str, **kwargs) -> TableClient: ...
def delete_table(self, table_name: str, **kwargs) -> None: ...
def list_tables(self, **kwargs) -> ItemPaged[TableItem]: ...
def get_service_properties(self, **kwargs) -> Dict[str, object]: ...
def set_service_properties(self, **kwargs) -> None: ...Table-specific operations for entity management, CRUD operations, batch transactions, and advanced querying with filtering and pagination support.
class TableClient:
def __init__(self, endpoint: str, table_name: str, **kwargs): ...
def create_entity(self, entity: Union[TableEntity, Dict], **kwargs) -> Dict[str, Any]: ...
def get_entity(self, partition_key: str, row_key: str, **kwargs) -> TableEntity: ...
def update_entity(self, entity: Union[TableEntity, Dict], **kwargs) -> Dict[str, Any]: ...
def delete_entity(self, partition_key: str, row_key: str, **kwargs) -> None: ...
def query_entities(self, query_filter: str, **kwargs) -> ItemPaged[TableEntity]: ...
def submit_transaction(self, operations: List, **kwargs) -> List[Dict[str, Any]]: ...Data modeling capabilities including type-safe entity properties, metadata handling, and Entity Data Model (EDM) type specifications for precise data representation.
class TableEntity(dict):
metadata: EntityMetadata
class EntityProperty:
value: Any
edm_type: Union[str, EdmType]
class EdmType(Enum):
STRING = "Edm.String"
INT32 = "Edm.Int32"
INT64 = "Edm.Int64"
BOOLEAN = "Edm.Boolean"
DATETIME = "Edm.DateTime"
GUID = "Edm.Guid"
BINARY = "Edm.Binary"
DOUBLE = "Edm.Double"Shared Access Signature (SAS) generation, access policies, and permission management for secure, time-limited access to tables and entities.
def generate_account_sas(
credential: AzureNamedKeyCredential,
resource_types: ResourceTypes,
permission: Union[str, AccountSasPermissions],
expiry: Union[datetime, str],
**kwargs
) -> str: ...
def generate_table_sas(
credential: AzureNamedKeyCredential,
table_name: str,
permission: Union[str, TableSasPermissions] = None,
expiry: Union[datetime, str] = None,
**kwargs
) -> str: ...Comprehensive exception handling with specific error codes, transaction failure management, and detailed error information for robust application development.
class TableTransactionError(Exception):
index: int
error_code: TableErrorCode
message: str
additional_info: Dict[str, Any]
class RequestTooLargeError(TableTransactionError): ...
class TableErrorCode(Enum):
AUTHENTICATION_FAILED = "AuthenticationFailed"
RESOURCE_NOT_FOUND = "ResourceNotFound"
ENTITY_ALREADY_EXISTS = "EntityAlreadyExists"
# ... additional error codesHigh-performance batch transaction processing supporting multiple entity operations in single atomic transactions with comprehensive operation types.
class TransactionOperation(Enum):
CREATE = "create"
UPDATE = "update"
UPSERT = "upsert"
DELETE = "delete"
class UpdateMode(Enum):
REPLACE = "replace"
MERGE = "merge"Complete asynchronous operation support using async/await patterns for non-blocking I/O, providing identical functionality to synchronous clients with improved performance for concurrent scenarios.
from azure.data.tables.aio import TableServiceClient, TableClient
class TableServiceClient:
async def create_table(self, table_name: str, **kwargs) -> TableClient: ...
async def list_tables(self, **kwargs) -> AsyncItemPaged[TableItem]: ...
class TableClient:
async def create_entity(self, entity: Union[TableEntity, Dict], **kwargs) -> Dict[str, Any]: ...
async def query_entities(self, query_filter: str, **kwargs) -> AsyncItemPaged[TableEntity]: ...# Type aliases for entity operations
EntityType = Union[TableEntity, Mapping[str, Any]]
TransactionOperationType = Union[
Tuple[TransactionOperation, EntityType],
Tuple[TransactionOperation, EntityType, Mapping[str, Any]]
]
# Metadata structure
class EntityMetadata(TypedDict):
etag: Optional[str]
timestamp: Optional[datetime]
id: str # optional
type: str # optional
editLink: str # optional