【问题标题】:sqlite3 python, how to get bytes back from blobsqlite3 python,如何从blob取回字节
【发布时间】: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


【解决方案1】:

我想通了。在调用缓冲区对象的 str() 方法后,我得到了我需要的东西。

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 2020-08-29
    • 2012-01-30
    • 2018-09-19
    • 2015-05-07
    • 1970-01-01
    • 2010-10-06
    • 2011-09-28
    相关资源
    最近更新 更多