Не може да се свърже amazon DynamoDb Local с помощта на python boto sdk

Искам да свържа db, наличен в DynamoDbLocal, с помощта на boto sdk. Следвах документацията според връзката по-долу.

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

Това е официалната документация, предоставена от amazon. Но когато изпълнявам наличния фрагмент в документа, не мога да свържа db и не мога да получа наличните таблици в db. Името на db е "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 налични таблици в db. Но получавам празен списък след изпълнение на командата 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, благодаря ти за бързия отговор. Какъв проблем получавам след създаването на таблицата е, че не успях да видя таблиците в db, което споменах във въпроса. След като създадох таблиците, мога да получа списъка с таблици {u'TableNames': [u'sample', u'users']} по този начин. Но след като рестартирах системата, таблиците изчезнаха и тези таблици дори не бяха налични в db. И още нещо, че създаването на таблици работи добре, но вмъкването на данни в историята създава някои проблеми. И основно искам да се съсредоточа върху създаването на таблица в db.   -  person bhadram    schedule 21.02.2015
comment
@MikeKobit В тази db имам 8 таблици, когато се свързах с тази db защо не показва съществуващите таблици. И дори когато създавам таблиците след свързване, не можах да видя тези таблици в db.   -  person bhadram    schedule 21.02.2015
comment
Ако използвате флага inMemory за локален DynamoDB, той ще унищожи всичко при изключване. Трудно е да се каже, защото не сте предоставили всички подробности във въпроса.   -  person mkobit    schedule 21.02.2015
comment
@MikeKobit Знам концепцията за флаг -inmemory. Но не предоставих тази опция, докато работех с локалното динамо. Ето командата, която дадох, докато изпълнявах динамото $java -jar DynamoDBLocal.jar.   -  person bhadram    schedule 21.02.2015
comment
@MikeKobit Предоставих идентификационните данни според snipper за свързване на db. Вместо да се свързва с dummy_us-east-1.db, той създава и се свързва с нова база данни с име dummy_localhost.db. Най-накрая разбрах това нещо.   -  person bhadram    schedule 21.02.2015


Отговори (2)


Изглежда, че използвате различни подходи за свързване с DynamoDB Local.

Ако е така, можете също да стартирате DynamoDB Local с флага sharedDb, за да го принудите да използва един файл db:

-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