Python
Primero sigue las instrucciones para compilar e instalar LiteSync desde código fuente o usa los binarios precompilados para tu plataforma. Puedes comenzar con la versión gratuita.
Luego instale el módulo Litesync de acuerdo con la versión de Python:
Python 3
pip install litesync
Python 2.7
git clone --depth=1 https://gitlab.com/litesync/python2 litesync-python2
cd litesync-python2
python setup.py build
sudo python setup.py install
Código de ejemplo
El módulo Litesync tiene la misma API que el módulo sqlite3
import litesync as sqlite3
import json
import time
conn = sqlite3.connect('file:app.db?node=secondary&connect=tcp://server:port')
# Compruebe si el DB está listo
while True:
result = conn.cursor().execute("PRAGMA sync_status").fetchone()
status = json.loads(result[0])
if status["db_is_ready"]: break
time.sleep(0.250)
# Ahora podemos usar la conexión DB
...
Notificación de actualización
Su aplicación puede ser notificada cuando se actualiza la base de datos local debido a la sincronización con nodos remotos.La notificación se realiza a través de una función definida por el usuario.
def on_db_update(arg):
print("Actualización recibida")
conn.create_function("update_notification", 1, on_db_update)
IMPORTANTE: La función de notificación es llamada por el hilo del trabajador.¡La aplicación no debe usar la conexión DB dentro de la función de notificación y debe volver lo más rápido posible!La aplicación puede transferir la notificación al hilo principal antes de regresar.
Solución de problemas
También podemos usar el módulo sqlite3 de Python en Linux y Windows
En ambos casos, el módulo sqlite3 del Python interactúa con la biblioteca SQLite del sistema
Linux
Tenemos 2 opciones para hacer Python para usar la biblioteca SQLite modificada que contiene litesync:
A. Use LD_LIBRARY_PATH Al abrir la aplicación
LD_LIBRARY_PATH=/usr/local/lib/litesync python app.py
B. Hacer que el módulo sqlite3 use la biblioteca litesync
sudo apt install patchelf
patchelf --replace-needed libsqlite3.so.0 liblitesync.so /usr/lib/python2.7/lib-dynload/_sqlite3.so
Para verificar si fue exitoso:
ldd /usr/lib/python2.7/lib-dynload/_sqlite3.so
Windows
Reemplace el archivo sqlite3.dll en la carpeta \Python\DLLs con el que contiene litesync (Cambiar el nombre de Litesync-0.1.dll a sqlite3.dll)
Uso
En este caso usamos el módulo sqlite3 en lugar del módulo Litesync
import sqlite3
import json
import time
conn = sqlite3.connect('file:app.db?node=secondary&connect=tcp://server:port')
# Compruebe si el DB está listo
while True:
result = conn.cursor().execute("PRAGMA sync_status").fetchone()
status = json.loads(result[0])
if status["db_is_ready"]: break
time.sleep(0.250)
# Ahora podemos usar la conexión DB
...