有选择地绕过数据类型转换器

时间:2016-02-18 19:10:39

标签: python sqlite

我有一个SQL数据库,我在Python中使用sqlite3查询,我创建了一个名为FOOBAR的自定义数据类型。具有此数据类型的列存储字符串,该字符串是文件路径。查询时,转换器打开文件并返回一些数据,这非常有效。

我想知道是否有任何方法可以将文件路径字符串从列中拉出来,即有选择地不时将转换器应用于此自定义数据类型。

1 个答案:

答案 0 :(得分:3)

如果您在转换中使用PARSE_DECLTYPES method挂钩,请使用CAST更改'列的类型:

public class RestyDispatcher extends DefaultFilterawareDispatcher {

    @Inject
    public RestyDispatcher(ForbiddenDispatcherFilter filter) {
      addFilter(filter);
      addFilter(new BasicAuthHeaderDispatcherFilter());
    }

    @Override
    public Request send(Method method, RequestBuilder builder) throws RequestException {
      return super.send(method, builder);
    }
}

这会导致SQLite报告文件名,使其具有不同的类型(本例中为文本),绕过与列关联的类型转换。

演示,改编自Point() example from the documentation

select CAST(filename as TEXT) from table where <filter>

如果您使用的是PARSE_COLNAMES method,请在查询时不要在列名称别名中包含类型。