I want try use Python and GDAL to create some SQL queries in my shapefiles. I try something and it looks good, but doesn't work. I get a none
result.
Here is the code :
from osgeo import ogr
ogr_ds = ogr.Open('line.shp')
TEST=3
sql = "SELECT id FROM {} where id='{}'".format(ogr_ds,TEST)
layer = ogr_ds.ExecuteSQL(sql)
print layer
Answer
You are probably using the input layer in a wrong way; furthermore, also the .format{}
operation doesn't seem correct.
You may try the following code:
from osgeo import ogr
filepath = 'C:/Users/path_to_the_shapefile/line.shp' # set the filepath
layer_name = filepath[:-4].split('/')[-1] # get the layer name
driver = ogr.GetDriverByName ("ESRI Shapefile")
ogr_ds = driver.Open(filepath)
TEST=3
sql = "SELECT id FROM %s WHERE id=%s" %(layer_name,TEST)
layer = ogr_ds.ExecuteSQL(sql)
print layer
I tested it with another shapefile (and a similar query) and it returns what expected:
print layer
>
EDIT
If you want to print the id
value, you may add these lines:
feat = layer.GetNextFeature()
val = feat.GetField(0)
print val
but this will only returns one feature and not all the queried features (this kind of operation would be useful if you are only interested in knowing if a specific value for the id
field is stored in the input layer). Furthermore, you will get an error if there isn't any id
value equals to the TEST
variable.
No comments:
Post a Comment