Не удалось подключить amazon DynamoDb Local с помощью python boto sdk

Я хочу подключить базу данных, доступную внутри DynamoDbLocal, с помощью boto sdk. Я следовал документации по ссылке ниже.

http://boto.readthedocs.org/en/latest/dynamodb2_tut.html#dynamodb-local

Это официальная документация, предоставленная амазонкой. Но когда я выполняю фрагмент, доступный в документе, я не могу подключиться к базе данных и не могу получить таблицы, доступные внутри базы данных. Имя базы данных "dummy_us-east-1.db". И мой фрагмент:

from boto.dynamodb2.layer1 import DynamoDBConnection
con = DynamoDBConnection(host='localhost', port=8000,
    aws_access_key_id='dummy',
    aws_secret_access_key='dummy',
    is_secure=False,
    )

print con.list_tables()

У меня есть 8 таблиц, доступных внутри БД. Но я получаю пустой список после выполнения команды list_tables().

output:
{u'TableNames':[]}

Вместо доступа к необходимой базе данных он создает и получает доступ к новой базе данных. Старая база данных: dummy_us-east-1.db Новая база данных: dummy_localhost.db Как решить эту проблему. Пожалуйста, дайте мне несколько предложений относительно доступа к DynamoDbLocal. Заранее спасибо.


person bhadram    schedule 20.02.2015    source источник
comment
Можете ли вы показать код, где вы вызываете CreateTable ?   -  person mkobit    schedule 21.02.2015
comment
Похоже, вы правильно подключаетесь к DynamoDBLocal. Мне интересно, как вы создали таблицы в файле dummy_us-east-1.db? Вы уже пробовали вызов создания таблицы и убедились, что list_tables все еще пуст? пользователи = Table.create('пользователи', схема=[HashKey('имя пользователя')], соединение=против);   -  person Raymond Lin    schedule 21.02.2015
comment
Привет @MikeKobit, это просто код Python, использующий boto sdk. Приведенный выше фрагмент — это мой код. Используя этот код, мы можем подключить файл localdynamodb.   -  person bhadram    schedule 21.02.2015
comment
@bhadramkomali вам нужно создать таблицы в локальной базе данных DynamoDB. Вы подключены к нему, но там еще ничего нет, потому что вы его туда не поместили.   -  person mkobit    schedule 21.02.2015
comment
Привет @RaymondLin, спасибо за быстрый ответ. Проблема, с которой я столкнулся после создания таблицы, заключается в том, что я не смог увидеть таблицы в базе данных, о чем я упомянул в вопросе. После создания таблиц я могу получить список таблиц {u'TableNames': [u'sample', u'users']} следующим образом. Но как только я перезапустил систему, таблицы исчезли, и эти таблицы даже не были доступны в БД. И еще, создание таблиц работает нормально, а вот вставка данных в сказку вызывает некоторые проблемы. И в основном я хочу сосредоточиться на создании таблицы в БД.   -  person bhadram    schedule 21.02.2015
comment
@MikeKobit В этой базе данных у меня есть 8 таблиц, когда я подключился к этой базе данных, почему она не показывает существующие таблицы. И даже когда я создаю таблицы после подключения, я не смог увидеть эти таблицы внутри БД.   -  person bhadram    schedule 21.02.2015
comment
Если вы используете флаг inMemory для локального DynamoDB, он уничтожит все при завершении работы. Трудно сказать, потому что вы не предоставили все детали в вопросе.   -  person mkobit    schedule 21.02.2015
comment
@MikeKobit Я знаю концепцию флага -inmemory. Но я не предоставил эту опцию при запуске локальной динамо-машины. Вот команда, которую я дал при запуске Dynamo $java -jar DynamoDBLocal.jar.   -  person bhadram    schedule 21.02.2015
comment
@MikeKobit Я предоставил учетные данные в соответствии со снайпером для подключения db. Вместо подключения к dummy_us-east-1.db он создает новую базу данных с именем dummy_localhost.db и подключается к ней. Наконец я узнал эту вещь.   -  person bhadram    schedule 21.02.2015


Ответы (2)


Похоже, вы используете разные подходы для подключения к DynamoDB Local.

Если это так, вы также можете запустить DynamoDB Local с флагом sharedDb, чтобы заставить его использовать один файл базы данных:

-sharedDb                   When specified, DynamoDB Local will use a
                            single database instead of separate databases
                            for each credential and region. As a result,
                            all clients will interact with the same set of
                            tables, regardless of their region and
                            credential configuration.

E.g.

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar --sharedDb
person Johnny Wu    schedule 25.02.2015

Вот решение. это потому, что вы не запустили dynamodb с расположением файла jar.

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
person Yanish Pradhananga    schedule 04.12.2015