#docker #amazon-dynamodb #boto3 #amazon-dynamodb-local
#docker #amazon-dynamodb #boto3 #amazon-dynamodb-local
Вопрос:
Для всех,
Я новичок в python, и у меня есть локальная среда docker docker DynamoDB, но я хотел создать класс, который позволяет мне перечислять таблицы или создавать таблицы, например, в моем локальном docker dynamodb или aws dynamo db.
import boto3
class DDB():
def __init__(self):
print("Welcome to the DynamoDB py")
def ddbconnect(self,env):
self.env = env
if self.env == "l":
client = boto3.client('dynamodb',endpoint_url='http://localhost:8000')
return env
else:
client = boto3.client('dynamodb')
return env
def ddbcreateTable(self,tbname,pk,sk):
createResponse = client.create_table(
AttributeDefinitions=[
{
'AttributeName': pk,
'AttributeType': 'S',
},
{
'AttributeName': sk,
'AttributeType':'N'
}
],
KeySchema=[
{
'AttributeName': pk,
'KeyType':'HASH'
},
{
'AttributeName': sk,
'KeyType':'RANGE'
},
],
BillingMode = 'PAY_PER_REQUEST',
TableName=tbname
)
mydb=DDB()
env = input("enter L if it is a Local Dynamodb")
if env.lower() == "l":
mydb.ddbconnect(env)
while True:
prompt = input("Choices are (C)reate or (L)ist Table or (E)xit - L | C | E : " )
if prompt.lower() == "l":
env=input()
mydb.ddblist()
continue
elif prompt.lower() == "c":
tbname=input("Enter the table name: ")
pk=input("Enter the primary key: ")
sk=input("Enter the sort key w/ numberic attribute: ")
mydb.ddbcreateTable(tbname,pk,sk)
continue
elif prompt.lower() == "e" :
print("Exiting")
break
else:
print("Enter a valid selection")
continue
Я уверен, что есть более эффективный способ записи, но это своего рода логика
Комментарии:
1. С какой проблемой вы столкнулись? Вызывает ли это ошибку в какой-либо среде?
2. Несколько вещей. Ваши отступы неверны в вашем цикле while. Кроме того, если я выбираю C для создания таблицы, он вызывает ddbcreateTable, но он никогда не вызывает ddbconnect, который установил бы соединение с DynamoDB. Итак, здесь вы видите довольно много проблем.
3. Я пытался создать класс существующего кода, который я создал.