簡體   English   中英

使用 Python 和 bsddb3 在 Berkeley DB 數據庫中存儲數據

[英]Storing data in a Berkeley DB database with Python and bsddb3

我正在嘗試使用 Python 3.5 和 bsddb3 將數據寫入 Berkeley DB 數據庫。 我對 Berkeley DB 沒有任何經驗,但我喜歡使用時間戳作為鍵,使用一些 JSON 數據作為相應的值。 以下示例導致錯誤:

#!/usr/bin/env python3

import bsddb3
import time

fn = 'berkeley.db'
db = bsddb3.hashopen(fn, 'c')
t = time.time()
d = "{ data: 'foo' }"
db[t] = d
db.close()

錯誤:

$ python3 example.py
[...]
self.db[key] = value
TypeError: Bytes or Integer object expected for key, float found

使用整數而不是time.time() ,例如, db[0] = data ,也不起作用: TypeError: Integer keys only allowed for Recno and Queue DB's

不幸的是,沒有關於如何將 Berkeley DB 與 Python 結合使用的綜合文檔。 關於我做錯了什么的任何建議?

我在閱讀京都內閣文檔時得到了解決方案。 密鑰必須編碼為字節:

db[b'key'] = d
print((db.get(b'key')))

運行具有上述更改的示例將導致存儲數據集的輸出:

$ python3 main.py
b"{ data: 'random' }"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM