【问题标题】:peewee.InterfaceError: Error binding parameter while saving big amout of datapeewee.InterfaceError:保存大量数据时绑定参数错误
【发布时间】:2018-07-30 18:47:06
【问题描述】:

我在我的数据库中创建了许多记录,如下所示:

Subproducts.create(mf_id=mf_id, co=co, mf_binary=mf_binary_data.getbuffer())

mf_binary 类型为 io.BytesIO() - 它是收集到 zipfile 中的二进制文件的二进制表示

我已经使用这种方法成功创建了许多记录,但是我遇到了一个特定数据集的问题。 它比其他的要大,大约需要 1.2GB。 当我尝试将其保存在 DB 中时,会发生以下错误。 peewee.InterfaceError: Error binding parameter 2 - probably unsupported type.

我的模型中 mf_binary 的字段是peewee.BlobField(default=b'0')

如何将此类数据存储在 peewee 数据库中?

【问题讨论】:

    标签: python database orm zipfile peewee


    【解决方案1】:

    调用getbuffer() 返回一个memoryview 对象,该对象显然不受底层数据库驱动程序的支持(顺便说一句,它是哪一个?)。 InterfaceError 是由您的数据库驱动程序引发的,而不是 Peewee,这表明问题来自您的驱动程序不了解如何处理 memoryview 对象。

    最好的办法是使用mf_binary_data.getvalue(),它应该返回一个bytes 对象。

    【讨论】:

    • 我使用 Sqlite 驱动。我尝试使用getvalue() 而不是getbuffer(),但它没有帮助。我对其他数据集没有任何问题。我可以将它们存储在数据库中并将它们提取到文件中。但是我有一个导致问题的数据集,可能是因为大小。任何想法如何解决这个问题?
    • “但它没有帮助”——你肯定不会在尝试插入字节串时收到同样的错误吗?
    猜你喜欢
    • 1970-01-01
    • 2018-03-27
    • 2019-07-23
    • 1970-01-01
    • 2016-05-22
    • 2016-04-01
    • 2023-03-07
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多