【发布时间】:2018-08-17 03:59:03
【问题描述】:
我已将我的 torrent 信息从 torrent 文件中以一种编码格式(通过 libtorrent)放入 sqlite3 数据库中的 blob 中,如下所示:
conn = sqlite3.connect(self.path + '/files/torrents.db')
c = conn.cursor()
q = 'UPDATE torrents SET torrent = ? WHERE name = ?'
c.execute(q, (sqlite3.Binary(data),name))
conn.commit()
conn.close()
但是,如果我使用选择查询从数据库中检索 blob,我得到的是一个缓冲区对象.. 我如何将其转换回我放入数据库的内容,或者更确切地说是放入 sqlite3.Binary 我想要我的编码字节对象回来。
【问题讨论】:
-
你能提供一个完整的例子(stackoverflow.com/help/mcve)吗?当我尝试将其扩展为可行的东西时,我得到的是
bytes对象,而不是缓冲区对象。此外,无论您返回哪个字节,都与您放入Binary的字节相同,所以……首先有什么问题? -
您是否可能在未向我们展示的代码中做了一些奇怪的事情,例如注册适配器/转换器?
-
@abarnert libtorrent torrent_info 类不接受缓冲区,所以我得到了那个错误,但是当我使用缓冲区对象的 str 方法时,问题得到了解决。
-
所以问题实际上与你如何使用 sqlite 无关,而是你如何使用 libtorrent。如果您想自己回答,您应该编辑问题以包含与实际问题相关的代码,而不是与运行正常的程序的不同部分相关的代码,更一般地说是关于正确的问题。
标签: python sqlite blob libtorrent