प्रलेखन पढ़ने से, मैं देख सकता हूं कि तीन विधियां हैं जिनके द्वारा आप जांच सकते हैं कि कोई तालिका मौजूद है या नहीं।
- CreateTable API तालिका पहले से मौजूद होने पर
ResourceInUseException
त्रुटि उत्पन्न करती है। इस
- को पकड़ने के अलावा प्रयास के साथ create_table विधि को लपेटें आप वर्तमान खाते और एंडपॉइंट से जुड़े तालिका नामों की सूची प्राप्त करने के लिए ListTables API का उपयोग कर सकते हैं। जांचें कि टेबल नाम आपके द्वारा प्रतिक्रिया में प्राप्त तालिका नामों की सूची में मौजूद है या नहीं।
- DescribeTable API यदि आपके द्वारा अनुरोधित तालिका नाम मौजूद नहीं है तो
ResourceNotFoundException
त्रुटि फेंक देगा।
मेरे लिए, पहला विकल्प बेहतर लगता है यदि आप केवल एक टेबल बनाना चाहते हैं।
संपादित करें: मुझे लगता है कि कुछ लोगों को अपवादों को पकड़ना मुश्किल हो रहा है। Boto3 में अपवादों को संभालने के तरीके के बारे में जानने के लिए मैं आपके लिए नीचे कुछ कोड डालूंगा।
उदाहरण 1
import boto3
dynamodb_client = boto3.client('dynamodb')
try:
response = dynamodb_client.create_table(
AttributeDefinitions=[
{
'AttributeName': 'Artist',
'AttributeType': 'S',
},
{
'AttributeName': 'SongTitle',
'AttributeType': 'S',
},
],
KeySchema=[
{
'AttributeName': 'Artist',
'KeyType': 'HASH',
},
{
'AttributeName': 'SongTitle',
'KeyType': 'RANGE',
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5,
},
TableName='test',
)
except dynamodb_client.exceptions.ResourceInUseException:
# do something here as you require
pass
उदाहरण 2
import boto3
dynamodb_client = boto3.client('dynamodb')
table_name = 'test'
existing_tables = client.list_tables()['TableNames']
if table_name not in existing_tables:
response = dynamodb_client.create_table(
AttributeDefinitions=[
{
'AttributeName': 'Artist',
'AttributeType': 'S',
},
{
'AttributeName': 'SongTitle',
'AttributeType': 'S',
},
],
KeySchema=[
{
'AttributeName': 'Artist',
'KeyType': 'HASH',
},
{
'AttributeName': 'SongTitle',
'KeyType': 'RANGE',
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5,
},
TableName=table_name,
)
उदाहरण 3
import boto3
dynamodb_client = boto3.client('dynamodb')
try:
response = dynamodb_client.describe_table(TableName='test')
except dynamodb_client.exceptions.ResourceNotFoundException:
# do something here as you require
pass
मुझे आपका कोड पसंद है लेकिन यह पता नहीं लगा सकता कि 'botocore.errorfactory.ResourceNotFoundException' को कैसे आयात किया जाए। मैं 'AttributeError:' मॉड्यूल 'ऑब्जेक्ट प्राप्त करता रहता हूं' ResourceNotFoundException'' कोई विशेषता नहीं है। मुझे 'boto3' और' botocore 'आयात किया गया है। – anon58192932
@ anon58192932 क्या आपने यह पता लगाया कि अपवाद कैसे आयात करें? मुझे एक ही समस्या का सामना करना पड़ रहा है। – Phito
@ फिटो देरी के लिए खेद है कि मैं अभी काम में वापस आ गया। कृपया मेरा जवाब देखें कि मैं अपवाद की जांच कैसे करूँगा इस पर पोस्ट कर रहा हूं। जहां तक मैं समझता हूं इसे सीधे आयात नहीं किया जा सकता है। – anon58192932