0

binこの種の辞書をmongiengineに保存する方法。

{'xnFH8XCJiwMRFu8A': <dropbox.session.OAuthToken object at 0x2e4efd0>,  
 '867s6bnwbg3kc':<dropbox.session.OAuthToken object at 0x2e50610>}

Dropbox アクセス トークンを保存しようとしています。

事前に助けてくれてありがとう。

助けてくれてありがとう。

しかし、InvalidStringData というエラーが発生します。どこが間違っているのかわかりません。

コード スニペットは次のとおりです。

  #TOKEN_STORE is the above dictionary
  dbsession = DBsession.objects.get(oauth_token=oauth_token) # oauth_token is is request

  v = pickle.dumps(TOKEN_STORE, -1)
  print v # this prints proper binary string
  print pickle.loads(v) # this prints proper values

  dbsession.update(set__token_store=v) # this line fails and throws error on  
                                       #InvalidStringData


#DBSession Definition
# me is mongoengine
class DBSession(me.Document):
    oauth_token = me.StringField(required=True)
    token_store = me.BinaryField()
4

1 に答える 1

2

これは、mongodb に接続する方法とそこにデータを保存する方法を正確に示しています。
ぜひお読みください: http://docs.mongoengine.org/en/latest/apireference.html#documents

ただし、これだけのために使用している場合は、mongodb の使用はお勧めしません。本当に永続的な方法で彼の dict を保存したいだけで、Python からのみアクセスする必要がある場合は、shelve http://docs.python.org/2/library/shelve.htmlを使用することもできます。

質問が更新された後の更新:

そうあるべきだと思う

dbsession.update(set__token_store=pickle.loads(v))
于 2013-06-04T07:18:29.833 に答える