为什么“…like'%Wert'”不工作ogr.ExecuteSQL方言=SQLITE?

2024-06-16 17:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算在某个字段中有文本“Fehler”的特性。这只在使用OGRSQL方言时有效,但在使用SQLITE时返回None。我想使用SQLITE方言,因为我在几个SQL字符串上循环,其中一些字符串包含SUM(LENGTH)/1000,它只在SQLITE中工作,而不适用于OGRSQL。 我使用的是python2.7.5和gdal2.1.3 以下是我正在使用的代码:

import os

try:
    from osgeo import ogr
    from osgeo import gdal
except:
    sys.exit("Failed to import OGR-module. Please check the GDAL-Installation!")

srcFile = r"D:\Didi\Tmp\OGR_Select_Bug\Export.shp"
driver = ogr.GetDriverByName('ESRI Shapefile')
destFileDS = driver.Open(srcFile, 0)
sql = u"SELECT COUNT(*) as Anzahl from %s WHERE rstatus like '%%Fehler'" % (os.path.basename(srcFile)[:-4])

#Works
actLayer =  destFileDS.ExecuteSQL(statement=sql.encode('utf-8'), dialect='OGRSQL')
actFeat = actLayer.GetNextFeature()
destFileDS.ReleaseResultSet(actLayer)

#Returns none
actLayer =  destFileDS.ExecuteSQL(statement=sql.encode('utf-8'), dialect='SQLITE')
actFeat = actLayer.GetNextFeature()
destFileDS.ReleaseResultSet(actLayer)

Tags: 字符串fromimportsqlitesqlos方言ogr