我注意到,当我注册一个自定义转换器(连接处于detect_types=sqlite3.PARSE_DECLTYPES
模式)时,列被反序列化,即使它们从未被访问过。在我的特定应用程序中,我不能简单地从查询中省略列,但是一些反序列化非常昂贵,因此我希望将这些转换推迟到必要的时候。有没有办法将sqlite3
置于延迟转换器模式
或者,我可以创建自己的行工厂,根据声明的数据类型在其__getitem__(self, item)
中进行转换(而不是向sqlite3
注册转换器)。然而,这似乎比内置的东西效率低
更新:我正在做另一种选择,我有一个自定义的行工厂类,它接受一个converter_by_col
参数。我使用我的连接注册此行工厂,如下所示:
conn.row_factory = partial(LazyRow, converter_by_col=converter_by_col)
LazyRow.__getitem__(key)
然后检查self.converter_by_col
中的键,如果找到,则使用该转换器反序列化基础值;如果未找到,则返回基础值
目前没有回答
相关问题 更多 >
编程相关推荐