70 lines
2.5 KiB
Python
Raw Normal View History

2012-12-02 00:03:21 +01:00
# -*- coding: utf-8 -*-
"""
***************************************************************************
ogrds.py
---------------------
Date : November 2012
Copyright : (C) 2012 by Victor Olaya
Email : volayaf at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
__author__ = 'Victor Olaya'
__date__ = 'November 2012'
__copyright__ = '(C) 2012, Victor Olaya'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
from osgeo import ogr
class OgrDs:
def __init__(self, format, ds):
self.open(format, ds)
def open(self, format, ds):
driver = ogr.GetDriverByName(format)
self.ds = driver.CreateDataSource(ds)
return self.ds
def close(self):
if self.ds is not None:
self.ds.Destroy()
def execute_sql(self, sql_statement):
poResultSet = self.ds.ExecuteSQL( sql_statement, None, None )
if poResultSet is not None:
self.ds.ReleaseResultSet( poResultSet )
def select_values(self, sql_statement):
"""Returns an array of the values of the first column in a select:
select_values(ds, "SELECT id FROM companies LIMIT 3") => [1,2,3]
"""
values = []
poResultSet = self.ds.ExecuteSQL( sql_statement, None, None )
if poResultSet is not None:
poDefn = poResultSet.GetLayerDefn()
poFeature = poResultSet.GetNextFeature()
while poFeature is not None:
for iField in range(poDefn.GetFieldCount()):
values.append( poFeature.GetFieldAsString( iField ) )
poFeature = poResultSet.GetNextFeature()
self.ds.ReleaseResultSet( poResultSet )
return values
def table_exists(self, table):
exists = True
try:
self.ds.ExecuteSQL( "SELECT 1 FROM %s" % table, None, None )
except:
exists = False
return exists