使用已注册的转换器延迟反序列化Python sqlite3.Row列?

使用已注册的转换器延迟反序列化Python sqlite3.Row列?,python,sqlite,deserialization,Python,Sqlite,Deserialization,我注意到,当我注册一个自定义转换器时(连接处于detect\u types=sqlite3.PARSE\u DECLTYPES模式),列被反序列化,即使它们从未被访问过。在我的特定应用程序中,我不能简单地从查询中省略列,但是一些反序列化非常昂贵,因此我希望将这些转换推迟到必要的时候。有没有办法将sqlite3置于延迟转换器模式 或者,我可以创建自己的行工厂,根据声明的数据类型(而不是使用sqlite3注册转换器)在其\uu getitem\uuuu(self,item)中进行转换。然而,这似乎比

我注意到,当我注册一个自定义转换器时(连接处于
detect\u types=sqlite3.PARSE\u DECLTYPES
模式),列被反序列化,即使它们从未被访问过。在我的特定应用程序中,我不能简单地从查询中省略列,但是一些反序列化非常昂贵,因此我希望将这些转换推迟到必要的时候。有没有办法将
sqlite3
置于延迟转换器模式

或者,我可以创建自己的行工厂,根据声明的数据类型(而不是使用
sqlite3
注册转换器)在其
\uu getitem\uuuu(self,item)
中进行转换。然而,这似乎比内置的东西效率低

更新:我正在做另一个选择,在这里我有一个自定义的行工厂类,它接受一个
converter\u by\u col
参数。我使用我的连接注册此行工厂,如下所示:

conn.row_factory = partial(LazyRow, converter_by_col=converter_by_col)
LazyRow.\uuuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(key)
然后通过\u col检查
self.converter\u中的key,如果找到,则使用该转换器反序列化基础值;如果未找到,则返回基础值