<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Mar 29, 2014 at 8:35 PM, Ivan Minčík <span dir="ltr"><<a href="mailto:ivan.mincik@gmail.com" target="_blank">ivan.mincik@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div dir="ltr"><div><div><div>Hi all,<br></div>I was thinking how to improve situation with pyspatialite and spatialite 4 incompatibility. I have found that loading dynamic libspatialite module instead pyspatialite is easier than I thought, at least in Ubuntu 12.04.<br>


<br></div>Here is working code example (python-pysqlite2 required):<br><pre><code>from pysqlite2 import dbapi2 as sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
cur = conn.cursor()
cur.execute("SELECT load_extension('libspatialite.so.5')")
cur.execute("SELECT ST_Length(ST_GeometryFromText('LINESTRING(30 10, 10 30, 40 40)'))")
print cur.fetchone()[0]
conn.close()</code></pre><br></div>Has anybody tried to replace pyspatialite with python-pysqlite2 and dynamic libspatialite loading ?<span class=""><font color="#888888"><br></font></span></div></blockquote><div><br></div>

<div><br>OK, I have tried following trivial replacement of pyspatialite with pysqlite2 and it works great. Can we implement it?<br><br>--- /usr/share/qgis/python/plugins/db_manager/db_plugins/spatialite/connector.py    2014-04-01 19:48:56.000000000 +0200<br>

+++ connector.py    2014-04-03 22:09:10.044065426 +0200<br>@@ -26,7 +26,7 @@<br> from ..connector import DBConnector<br> from ..plugin import ConnectionError, DbError, Table<br> <br>-from pyspatialite import dbapi2 as sqlite<br>

+from pysqlite2 import dbapi2 as sqlite<br> <br> def classFactory():<br>     return SpatiaLiteDBConnector<br>@@ -41,6 +41,10 @@<br> <br>         try:<br>             self.connection = sqlite.connect( self._connectionInfo() )<br>

+            self.connection.enable_load_extension(True)<br>+            self.cursor = self.connection.cursor()<br>+            self.cursor.execute("SELECT load_extension('libspatialite.so.5')")<br>+            self.cursor.close()<br>

 <br>         except self.connection_error_types(), e:<br>             raise ConnectionError(e)<br></div></div><br>-- <br><div dir="ltr">Ivan Minčík<br><a href="mailto:ivan.mincik@gmail.com" target="_blank">ivan.mincik@gmail.com</a>  GPG: 0x79529A1E  <a href="http://imincik.github.io/0x79529A1E.key" target="_blank">http://imincik.github.io/0x79529A1E.key</a><br>

<a href="mailto:ivan.mincik@gista.sk" target="_blank">ivan.mincik@gista.sk</a>     GPG: 0xD714B02C  <a href="http://imincik.github.io/0xD714B02C.key" target="_blank">http://imincik.github.io/0xD714B02C.key</a><br><br></div>


</div></div>