mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Use sqlite3 instead of pyspatialite for SpatiaLite connections
This commit is contained in:
parent
5b64af1365
commit
6402160526
@ -590,38 +590,33 @@ def startServerPlugin(packageName):
|
||||
|
||||
def spatialite_connect(*args, **kwargs):
|
||||
"""returns a dbapi2.Connection to a SpatiaLite db
|
||||
either using pyspatialite if it is present
|
||||
or using the "mod_spatialite" extension (python3)"""
|
||||
try:
|
||||
from pyspatialite import dbapi2
|
||||
except ImportError:
|
||||
import sqlite3
|
||||
con = sqlite3.dbapi2.connect(*args, **kwargs)
|
||||
con.enable_load_extension(True)
|
||||
cur = con.cursor()
|
||||
libs = [
|
||||
# SpatiaLite >= 4.2 and Sqlite >= 3.7.17, should work on all platforms
|
||||
("mod_spatialite", "sqlite3_modspatialite_init"),
|
||||
# SpatiaLite >= 4.2 and Sqlite < 3.7.17 (Travis)
|
||||
("mod_spatialite.so", "sqlite3_modspatialite_init"),
|
||||
# SpatiaLite < 4.2 (linux)
|
||||
("libspatialite.so", "sqlite3_extension_init")
|
||||
]
|
||||
found = False
|
||||
for lib, entry_point in libs:
|
||||
try:
|
||||
cur.execute("select load_extension('{}', '{}')".format(lib, entry_point))
|
||||
except sqlite3.OperationalError:
|
||||
continue
|
||||
else:
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
raise RuntimeError("Cannot find any suitable spatialite module")
|
||||
cur.close()
|
||||
con.enable_load_extension(False)
|
||||
return con
|
||||
return dbapi2.connect(*args, **kwargs)
|
||||
using the "mod_spatialite" extension (python3)"""
|
||||
import sqlite3
|
||||
con = sqlite3.dbapi2.connect(*args, **kwargs)
|
||||
con.enable_load_extension(True)
|
||||
cur = con.cursor()
|
||||
libs = [
|
||||
# SpatiaLite >= 4.2 and Sqlite >= 3.7.17, should work on all platforms
|
||||
("mod_spatialite", "sqlite3_modspatialite_init"),
|
||||
# SpatiaLite >= 4.2 and Sqlite < 3.7.17 (Travis)
|
||||
("mod_spatialite.so", "sqlite3_modspatialite_init"),
|
||||
# SpatiaLite < 4.2 (linux)
|
||||
("libspatialite.so", "sqlite3_extension_init")
|
||||
]
|
||||
found = False
|
||||
for lib, entry_point in libs:
|
||||
try:
|
||||
cur.execute("select load_extension('{}', '{}')".format(lib, entry_point))
|
||||
except sqlite3.OperationalError:
|
||||
continue
|
||||
else:
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
raise RuntimeError("Cannot find any suitable spatialite module")
|
||||
cur.close()
|
||||
con.enable_load_extension(False)
|
||||
return con
|
||||
|
||||
|
||||
class OverrideCursor():
|
||||
|
Loading…
x
Reference in New Issue
Block a user