Python

The default way is to replace the pre-installed SQLite library with the one we compiled containing the litereplica.


Linux

The Python's sqlite3 module interfaces with the installed libsqlite3.so.0

We can check it using the command bellow:

ldd /usr/lib/python2.7/lib-dynload/_sqlite3.so


We have 3 options to make it work with the modified SQLite library containing litereplica:


1. Use the LD_LIBRARY_PATH when opening python

LD_LIBRARY_PATH=/usr/lib python app.py

2. Overwrite the pre-installed library

cd /usr/lib/arm-linux-gnueabihf  (or x86_64-linux-gnu, it depends on the architecture)

ln -sf /usr/lib/libsqlite3.so.1 libsqlite3.so.0

3. Set the rpath in the wrapper library

For this we need patchelf:

git clone https://github.com/NixOS/patchelf

cd patchelf

./bootstrap.sh

./configure

make

sudo make install

To set the rpath in the wrapper library:

patchelf --set-rpath /usr/lib /usr/lib/python2.7/lib-dynload/_sqlite3.so

To check if it was successful:

objdump -p /usr/lib/python2.7/lib-dynload/_sqlite3.so | grep RPATH


Windows

Replace the file sqlite3.dll in the folder \Python\DLLs with the one containing litereplica.


Usage

Then we can use the sqlite3 module normally, passing a URI in the place of the filename.

Note that this works even in Python 2.7 because the litereplica has the URI enabled by default.

Example code:

import sqlite3

conn = sqlite3.connect('file:data.db?replica=master&slave=tcp://server:port')