10

Boto は初めてで、これを使用して Python 辞書を Amazon DynamoDB に挿入しようとしています。「ダイナマイザー」(エンコーダー)が None 値をサポートしていないように見えるため、何かが欠けているに違いありません。ソース データには大量の null が含まれているため、これは問題です。各行を調べて、値が None であるすべてのキー/値項目を削除することもできますが、どういうわけか、Boto のように洗練されたパッケージがそれを処理してくれるように感じます。私は単に次のように1行を挿入しようとしています:

conn = DynamoDBConnection(region=RegionInfo(endpoint="dynamodb.us-west-2.amazonaws.com"))
dest = Table('d_company', connection=conn)
data = {"company_id":99999, "company_name":None}
dest.put_item(data)

...そして、これは私にエラーを与えます:

Error
Traceback (most recent call last):
  File "TestDynamoDB.py", line 37, in testPutIntoDynamoDB
    dest.put_item(data)
  File "C:\Python27\lib\site-packages\boto\dynamodb2\table.py", line 452, in put_item
    return item.save(overwrite=overwrite)
  File "C:\Python27\lib\site-packages\boto\dynamodb2\items.py", line 362, in save
    final_data = self.prepare_full()
  File "C:\Python27\lib\site-packages\boto\dynamodb2\items.py", line 265, in prepare_full
    final_data[key] = self._dynamizer.encode(value)
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 228, in encode
    dynamodb_type = self._get_dynamodb_type(attr)
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 220, in _get_dynamodb_type
    return get_dynamodb_type(attr)
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 110, in get_dynamodb_type
    raise TypeError(msg)
TypeError: Unsupported type "<type 'NoneType'>" for value "None"

私は何を間違っていますか?

4

3 に答える 3

9

あなたは何も悪いことをしていません。botoは確かに洗練されていますが、ビジネス ロジックの知識がないことを覚えておく必要があります。

たとえば、NoneDynamoDB データベースへの保存について、少なくともいくつか考えられる方法があります。

  • 「なし」文字列として
  • 空の文字列として
  • まったく保存しないでください - 覚えておいてください、これは NoSQL データベースであり、属性は必要ありません

それを判断する最良の方法は、コードです。データが の可能性がある場合Noneは、辞書に追加しないでください。

于 2014-01-16T07:39:25.380 に答える