peewee.InterfaceError:保存大量数据时绑定参数错误
Posted
技术标签:
【中文标题】peewee.InterfaceError:保存大量数据时绑定参数错误【英文标题】:peewee.InterfaceError: Error binding parameter while saving big amout of data 【发布时间】: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 数据库中?
【问题讨论】:
【参考方案1】:调用getbuffer()
返回一个memoryview
对象,该对象显然不受底层数据库驱动程序的支持(顺便说一句,它是哪一个?)。 InterfaceError
是由您的数据库驱动程序引发的,而不是 Peewee,这表明问题来自您的驱动程序不了解如何处理 memoryview
对象。
最好的办法是使用mf_binary_data.getvalue()
,它应该返回一个bytes
对象。
【讨论】:
我使用 Sqlite 驱动。我尝试使用getvalue()
而不是getbuffer()
,但它没有帮助。我对其他数据集没有任何问题。我可以将它们存储在数据库中并将它们提取到文件中。但是我有一个导致问题的数据集,可能是因为大小。任何想法如何解决这个问题?
“但它没有帮助”——你肯定不会在尝试插入字节串时收到同样的错误吗?以上是关于peewee.InterfaceError:保存大量数据时绑定参数错误的主要内容,如果未能解决你的问题,请参考以下文章