3

dynamodb_mapper ( botoと一緒に) をセットアップしてddbmockを sqlite バックエンドでAmazon DynamoDBとして使用する方法を説明してください。

現在、「プレーンな」boto を試してみましたが、ddbmock サーバーをローカルで起動し、次のように boto を使用して接続することで、ddbmock (sqlite を使用) で動作させることができました。

db = connect_boto_network(host='127.0.0.1', port=6543)

..そして、データベースに対するすべての操作に db オブジェクトを使用します。ただし、dynamodb_mapper は次の方法を使用して db 接続を取得します。

conn = ConnectionBorg()

私が理解しているように、それは boto のデフォルトの方法を使用して (実際の) DynamoDB に接続します。したがって、基本的に、上記のbotoで行ったように、ConnectionBorg()をローカルのddbmockサーバーに接続する(推奨される?)方法があるかどうか疑問に思っていますか? 提案をありがとう。

4

1 に答える 1

3

ライブラリモード

サーバー モードではなくライブラリ モードの場合:

import boto
from ddbmock import config
from ddbmock import connect_boto_patch

# switch to sqlite backend
config.STORAGE_ENGINE_NAME = 'sqlite'
# define the database path. defaults to 'dynamo.db'
config.STORAGE_SQLITE_FILE = '/tmp/my_database.sqlite'

# Wire-up boto and ddbmock together
db = connect_boto_patch()

boto 経由で dynamodb サービスにアクセスすると、内部で ddbmock が使用されます。

サーバーモード

それでもサーバー モードで ddbmock を使用したい場合はConnectionBorg._shared_state['_region']、テスト セットアップ コードの最初の部分を変更してみます。

ConnectionBorg._shared_state['_region'] = RegionInfo(name='ddbmock', endpoint="localhost:6543")

私の知る限り、これらの行の後の任意のConnectionBorgインスタンスを介した dynamodb へのアクセスは、ddbmock エントリ ポイントを使用します。

これは言った、私はそれをテストしたことがない. ddbmock の作成者がこれに関する最新情報を提供するようにします。

于 2013-02-04T17:12:40.400 に答える