Python için Azure Tabloları istemci kitaplığı - sürüm 12.4.4
Azure Tabloları, HTTP veya HTTPS kullanarak kimliği doğrulanmış çağrılar aracılığıyla dünyanın her yerinden erişilebilen bir NoSQL veri depolama hizmetidir.
Tablolar, eklenen veri miktarını desteklemek için gerektiğinde ölçeklendirilir ve karmaşık olmayan erişimle verilerin depolanmasına olanak sağlar.
Azure Tabloları istemcisi, Azure Depolama veya Cosmos hesaplarına erişmek için kullanılabilir. Bu belge öğesini kapsar azure-data-tables
.
Bu paketin artık kullanımdan kaldırılmış olan bir paketin yerini azure-cosmosdb-tables
aldığına dikkat edin. Diğer ayrıntılar için bkz. geçiş kılavuzu .
Kaynak kodu | Paket (PyPI) | Paket (Conda) | API başvuru belgeleri | Örnekleri
Bildirim
Python 2.7 için Azure SDK Python paketleri desteği 01 Ocak 2022'de sona erdi. Daha fazla bilgi ve soru için lütfen bu paketi kullanmak için https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 veya üzeri gereklidir konusuna bakın. Daha fazla ayrıntı için bkz. Python için Azure SDK sürüm desteği ilkesi.
Başlarken
Azure Tabloları SDK'sı bir Azure Depolama veya CosmosDB hesabına erişebilir.
Önkoşullar
- Bu paketi kullanmak için Python 3.7 veya üzeri gereklidir.
- Bir Azure aboneliğiniz olmalıdır ve
Hesap oluşturma
- Yeni bir depolama hesabı oluşturmak için Azure Portal, Azure PowerShell veya Azure CLI kullanabilirsiniz:
- Yeni bir cosmos depolama hesabı oluşturmak için Azure CLI veya Azure Portal'ı kullanabilirsiniz.
Paketi yükleme
Python için Azure Tabloları istemci kitaplığını pip ile yükleyin:
pip install azure-data-tables
İstemci oluşturma
Azure Tabloları kitaplığı iki tür kaynakla etkileşim kurmanızı sağlar:
- hesabınızdaki tablolar
- bu tabloların içindeki varlıklar.
Bu kaynaklarla etkileşim bir istemci örneğiyle başlar. İstemci nesnesi oluşturmak için hesabın tablo hizmeti uç noktası URL'sine ve hesaba erişmenizi sağlayan bir kimlik bilgilerine ihtiyacınız olacaktır. ,
endpoint
Depolama hesabınızın sayfasında Azure Portal'da "Erişim Anahtarları" bölümünün altında veya aşağıdaki Azure CLI komutunu çalıştırarak bulunabilir:
# Get the table service URL for the account
az storage account show -n mystorageaccount -g MyResourceGroup --query "primaryEndpoints.table"
Hesap URL'sini aldıktan sonra, hizmet istemcisini oluşturmak için kullanılabilir:
from azure.data.tables import TableServiceClient
service = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net/", credential=credential)
Tablo hizmeti URL'leri ve Azure Depolama için özel etki alanı adlarını yapılandırma hakkında daha fazla bilgi için resmi belgeleri gözden geçirin
Kimlik bilgisi türleri
Parametre credential
, kullanmak istediğiniz yetkilendirme türüne bağlı olarak bir dizi farklı biçimde sağlanabilir. Tablolar kitaplığı aşağıdaki yetkilendirmeleri destekler:
- Paylaşılan Anahtar
- Bağlantı Dizesi
- Paylaşılan Erişim İmza Belirteci
Paylaşılan anahtardan istemci oluşturma
Hesap paylaşılan anahtarı (diğer adıyla hesap anahtarı veya erişim anahtarı) kullanmak için anahtarı dize olarak sağlayın. Bu, Azure Portal'daki depolama hesabınızda "Erişim Anahtarları" bölümünün altında veya aşağıdaki Azure CLI komutunu çalıştırarak bulunabilir:
az storage account keys list -g MyResourceGroup -n MyStorageAccount
İstemcinin kimliğini doğrulamak için kimlik bilgisi parametresi olarak anahtarını kullanın:
from azure.core.credentials import AzureNamedKeyCredential
from azure.data.tables import TableServiceClient
credential = AzureNamedKeyCredential("my_account_name", "my_access_key")
service = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net", credential=credential)
İstemciyi bir bağlantı dizesinden oluşturma
Kullanım örneğinize ve yetkilendirme yönteminize bağlı olarak, hesap URL'sini ve kimlik bilgilerini ayrı olarak sağlamak yerine bağlantı dizesiyle bir istemci örneği başlatmayı tercih edebilirsiniz. Bunu yapmak için bağlantı dizesini istemcinin from_connection_string
sınıf yöntemine geçirin. Bağlantı dizesi Azure Portal'daki depolama hesabınızda "Erişim Anahtarları" bölümünde veya aşağıdaki Azure CLI komutuyla bulunabilir:
az storage account show-connection-string -g MyResourceGroup -n MyStorageAccount
from azure.data.tables import TableServiceClient
connection_string = "DefaultEndpointsProtocol=https;AccountName=<my_account_name>;AccountKey=<my_account_key>;EndpointSuffix=core.windows.net"
service = TableServiceClient.from_connection_string(conn_str=connection_string)
SAS belirtecinden istemci oluşturma
Paylaşılan erişim imzası (SAS) belirteci kullanmak için belirteci dize olarak sağlayın. Hesap URL'niz SAS belirtecini içeriyorsa kimlik bilgisi parametresini atayın. Azure Portal'dan Paylaşılan erişim imzası altında bir SAS belirteci oluşturabilir veya işlevlerden birini generate_*_sas()
kullanarak hesap veya tablo için sas belirteci oluşturabilirsiniz:
from datetime import datetime, timedelta
from azure.data.tables import TableServiceClient, generate_account_sas, ResourceTypes, AccountSasPermissions
from azure.core.credentials import AzureNamedKeyCredential, AzureSasCredential
credential = AzureNamedKeyCredential("my_account_name", "my_access_key")
sas_token = generate_account_sas(
credential,
resource_types=ResourceTypes(service=True),
permission=AccountSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1),
)
table_service_client = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net", credential=AzureSasCredential(sas_token))
Önemli kavramlar
Tablo hizmetinin yaygın kullanımları:
- Web ölçekli uygulamalara hizmet verebilen yapılandırılmış verilerin TB depolaması
- Karmaşık birleşimler, yabancı anahtarlar veya saklı yordamlar gerektirmeyen ve hızlı erişim için normalleştirilebilen veri kümelerini depolama
- Kümelenmiş dizin kullanarak hızlı veri sorgulaması
- OData protokolü ve LINQ filtre ifadelerini kullanarak verilere erişme
Aşağıdaki bileşenler Azure Tablolar Hizmeti'ni oluşturur:
- Hesap
- Hesap içinde bir varlık kümesi içeren bir tablo
- Tablo içindeki bir varlık, sözlük olarak
Python için Azure Tabloları istemci kitaplığı, ayrılmış bir istemci nesnesi kullanarak bu bileşenlerin her biriyle etkileşim kurmanızı sağlar.
İstemciler
Tablo Hizmeti'nin çeşitli bileşenleriyle etkileşime geçmek için iki farklı istemci sağlanır:
TableServiceClient
-- Hesap ayarını alma ve ayarlama
- Hesap içindeki tabloları sorgular, oluşturur ve siler.
TableClient
yöntemini kullanarak belirli bir tabloya erişmek için birget_table_client
alın.
TableClient
-- Belirli bir tabloyla etkileşim kurar (henüz mevcut olması gerekmez).
- Belirtilen tabloda varlık oluşturma, silme, sorgulama ve upsert varlıkları oluşturma.
- Belirtilen tablonun kendisini oluşturun veya silin.
Varlıklar
Varlıklar satırlara benzer. Bir varlığın bir PartitionKey
, ve RowKey
bir özellik kümesi vardır. Özellik, sütuna benzer bir ad değer çiftidir. Tablodaki her varlığın aynı özelliklere sahip olması gerekmez. Varlıklar örnek olarak aşağıdaki gibi sözlükler olarak gösterilebilir:
entity = {
'PartitionKey': 'color',
'RowKey': 'brand',
'text': 'Marker',
'color': 'Purple',
'price': '5'
}
- create_entity - Tabloya varlık ekleyin.
- delete_entity - Tablodan bir varlığı silin.
- update_entity - Var olan varlığı birleştirerek veya değiştirerek varlığın bilgilerini güncelleştirin.
UpdateMode.MERGE
var olan bir varlığa yeni özellikler ekler ve var olan özellikleri silmezUpdateMode.REPLACE
, gönderilen varlığa dahil olmayan mevcut özellikleri silerek mevcut varlığı verilen varlıkla değiştirir
- query_entities - OData filtrelerini kullanarak bir tablodaki mevcut varlıkları sorgular.
- get_entity - Bölüm ve satır anahtarına göre bir tablodan belirli bir varlığı alın.
- upsert_entity - Tablodaki bir varlığı birleştirin veya değiştirin ya da varlık yoksa varlığı ekler.
UpdateMode.MERGE
var olan bir varlığa yeni özellikler ekler ve var olan özellikleri silmezUpdateMode.REPLACE
, gönderilen varlığa dahil olmayan mevcut özellikleri silerek mevcut varlığı verilen varlıkla değiştirir
Örnekler
Aşağıdaki bölümlerde, aşağıdakiler dahil olmak üzere en yaygın Tablo görevlerinden bazılarını kapsayan çeşitli kod parçacıkları sağlanır:
Tablo oluşturma
Hesabınızda bir tablo oluşturun ve yeni oluşturulan tabloda işlem gerçekleştirmek için bir TableClient
alın:
from azure.data.tables import TableServiceClient
table_service_client = TableServiceClient.from_connection_string(conn_str="<connection_string>")
table_name = "myTable"
table_client = table_service_client.create_table(table_name=table_name)
Varlıkları oluşturma
Tabloda varlık oluşturma:
from azure.data.tables import TableServiceClient
from datetime import datetime
PRODUCT_ID = u'001234'
PRODUCT_NAME = u'RedMarker'
my_entity = {
u'PartitionKey': PRODUCT_NAME,
u'RowKey': PRODUCT_ID,
u'Stock': 15,
u'Price': 9.99,
u'Comments': u"great product",
u'OnSale': True,
u'ReducedPrice': 7.99,
u'PurchaseDate': datetime(1973, 10, 4),
u'BinaryRepresentation': b'product_name'
}
table_service_client = TableServiceClient.from_connection_string(conn_str="<connection_string>")
table_client = table_service_client.get_table_client(table_name="myTable")
entity = table_client.create_entity(entity=my_entity)
Varlıkları sorgulama
Tablodaki varlıkları sorgulama:
from azure.data.tables import TableClient
my_filter = "PartitionKey eq 'RedMarker'"
table_client = TableClient.from_connection_string(conn_str="<connection_string>", table_name="myTable")
entities = table_client.query_entities(my_filter)
for entity in entities:
for key in entity.keys():
print("Key: {}, Value: {}".format(key, entity[key]))
İsteğe Bağlı Yapılandırma
İsteğe bağlı anahtar sözcük bağımsız değişkenleri istemci ve işlem başına düzeyinde geçirilebilir. Azure-core başvuru belgelerinde yeniden denemeler, günlüğe kaydetme, aktarım protokolleri ve daha fazlası için kullanılabilir yapılandırmalar açıklanmaktadır.
İlke yapılandırmasını yeniden deneme
Yeniden deneme ilkesini yapılandırmak için bir istemci örneği oluştururken aşağıdaki anahtar sözcük bağımsız değişkenlerini kullanın:
- retry_total (int): İzin vermek için toplam yeniden deneme sayısı. Diğer sayılardan önceliklidir.
İstekleri
retry_total=0
yeniden denemek istemiyorsanız geçiş yapın. Varsayılan değer 10'dır. - retry_connect (int): Bağlantıyla ilgili kaç hatanın yeniden denenebileceği. Varsayılan değer 3'tir.
- retry_read (int): Okuma hatalarında yeniden deneme sayısı. Varsayılan değer 3'tir.
- retry_status (int): Hatalı durum kodları üzerinde yeniden deneme sayısı. Varsayılan değer 3'tir.
- retry_to_secondary (bool): mümkünse isteğin ikincil olarak yeniden denenip denenmeyeceği.
Bu yalnızca RA-GRS hesaplarının etkinleştirilmesi gerekir ve eski olabilecek veriler işlenebilir.
Varsayılan olarak olarak
False
gösterilir.
Diğer istemci /işlem başına yapılandırma
İstemcide veya işlem başına belirtilebilen diğer isteğe bağlı yapılandırma anahtar sözcük bağımsız değişkenleri.
İstemci anahtar sözcük bağımsız değişkenleri:
- connection_timeout (int): İsteğe bağlı olarak bağlanma ve okuma zaman aşımı değerini saniye olarak ayarlar.
- transport (Any): HTTP isteğini göndermek için kullanıcı tarafından sağlanan aktarım.
İşlem başına anahtar sözcük bağımsız değişkenleri:
- raw_response_hook (çağrılabilir): Verilen geri arama, hizmetten döndürülen yanıtı kullanır.
- raw_request_hook (çağrılabilir): Verilen geri arama, hizmete gönderilmeden önce isteği kullanır.
- client_request_id (str): İsteğin kullanıcı tarafından belirtilen isteğe bağlı kimliği.
- user_agent (str): İstekle birlikte gönderilecek kullanıcı aracısı üst bilgisine özel değeri ekler.
- logging_enable (bool): HATA AYıKLAMA düzeyinde günlüğe kaydetmeyi etkinleştirir. Varsayılan değer False'tur. Tüm istekler için etkinleştirmek üzere istemci düzeyinde de geçirilebilir.
- headers (dict): Özel üst bilgileri anahtar, değer çiftleri olarak geçirin. Örneğin.
headers={'CustomValue': value}
Sorun giderme
Genel
Azure Tabloları istemcileri , Azure Core'da tanımlanan özel durumları tetikler.
Python SDK'sını kullanarak Azure tablo kitaplığıyla etkileşime geçtiğiniz zaman, hizmet tarafından döndürülen hatalar REST API istekleri için aynı HTTP durum kodlarıyla yanıt verir. Tablo hizmeti işlemleri yararlı hata kodlarıyla bir HttpResponseError
hata oluşturur.
Örnekler için, zaten var olan bir tablo oluşturmaya çalışırsanız, "Çakışma" belirten bir 409
hata döndürülür.
from azure.data.tables import TableServiceClient
from azure.core.exceptions import HttpResponseError
table_name = 'YourTableName'
service_client = TableServiceClient.from_connection_string(connection_string)
# Create the table if it does not already exist
tc = service_client.create_table_if_not_exists(table_name)
try:
service_client.create_table(table_name)
except HttpResponseError:
print("Table with name {} already exists".format(table_name))
Günlüğe Kaydetme
Bu kitaplık , günlüğe kaydetme için standart günlük kitaplığını kullanır. HTTP oturumları (URL'ler, üst bilgiler vb.) hakkındaki temel bilgiler BİlGİ düzeyinde günlüğe kaydedilir.
İstek/yanıt gövdeleri ve kaydedilmemiş üst bilgiler de dahil olmak üzere ayrıntılı HATA AYıKLAMA düzeyi günlüğü, bir istemcide şu bağımsız değişkenle logging_enable
etkinleştirilebilir:
import sys
import logging
from azure.data.tables import TableServiceClient
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# This client will log detailed information about its HTTP sessions, at DEBUG level
service_client = TableServiceClient.from_connection_string("your_connection_string", logging_enable=True)
Benzer şekilde, logging_enable
istemci için etkinleştirilmemiş olsa bile tek bir işlem için ayrıntılı günlüğe kaydetmeyi etkinleştirebilir:
service_client.create_entity(entity=my_entity, logging_enable=True)
Sonraki adımlar
Tablo örneklerimizi kullanmaya başlayın.
SDK'nın GitHub deposunda kullanabileceğiniz çeşitli Azure Tabloları Python SDK örnekleri vardır. Bu örnekler, Tablolar ile çalışırken yaygın olarak karşılaşılan ek senaryolar için örnek kod sağlar.
Genel Senaryolar
Bu kod örnekleri, Azure Tabloları istemci kitaplığıyla yapılan yaygın senaryo işlemlerini gösterir. Örneklerin zaman uyumsuz sürümleri (_async ekli Python örnek dosyaları) zaman uyumsuz işlemleri gösterir.
- Tablo oluşturma ve silme: sample_create_delete_table.py (zaman uyumsuz sürüm)
- Liste ve sorgu tabloları: sample_query_tables.py (zaman uyumsuz sürüm)
- Varlıkları ekleme ve silme: sample_insert_delete_entities.py (zaman uyumsuz sürüm)
- Sorgu ve liste varlıkları: sample_query_table.py (zaman uyumsuz sürüm)
- Varlıkları güncelleştirme, upsert ve birleştirme: sample_update_upsert_merge_entities.py (zaman uyumsuz sürüm)
- Tek bir işlemde çok sayıda istek işleme: sample_batching.py (zaman uyumsuz sürüm)
Diğer belgeler
Azure Tabloları hakkında daha kapsamlı belgeler için docs.microsoft.com ile ilgili Azure Tabloları belgelerine bakın.
Bilinen Sorunlar
Cosmos DB tablo uç noktalarıyla ilgili bilinen sorunların listesi burada bulunabilir.
Katkıda bulunma
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorularınız veya yorumlarınızla iletişime geçin opencode@microsoft.com .
Azure SDK for Python