[gdal-dev] Delete a sqlite database

Frank Warmerdam warmerdam at pobox.com
Mon Nov 22 09:24:16 EST 2010


Ludovic Granjon wrote:
> Hi all
> I try in a python script to delete a sqlite database that I use in an 
> OGR ExecuteSQL.
> Let me give you an example :
> If I do :
> 
>  >>> from osgeo import *
>  >>> import os
>  >>> datasource = ogr.Open("decoupe.shp")
>  >>> layer = datasource.GetLayer()
>  >>> joinLayer=datasource.ExecuteSQL("SELECT decoupe.FID as ligne_id, 
> c.lFid as ligne_id2, c.count as count FROM decoupe LEFT JOIN 
> 'project.sqlite'.comptage c ON decoupe.FID=c.lFid")
>  >>> datasource.Destroy()
> 
> It seems that there still a connection to my sqlite database and I can't 
> delete it.
> 
> When I try on MS Windows (There's no error on linux) :
>  >>> os.remove('project.sqlite')
> 
> I have :
> Traceback (most recent call last):
> File "<pyshell#5>", line 1, in <module>
> os.remove('project.sqlite')
> WindowsError: [Error 13] Le processus ne peut pas accéder au fichier car 
> ce fichier est utilisé par un autre processus: 'project.sqlite'
> 
> 
> Do you know a way to do that ?

Ludovic,

I think newish versions of the Python bindings attempt to keep the datasource
alive as long as their are references to layers from it.  I would suggest
setting layer and joinLayer variables to None before calling destroy on the
datasource or even just setting the datasource to None.  I'm not positive that
this is the issue - perhaps you could let us know if it works.

Best regards,
-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent



More information about the gdal-dev mailing list