Python

Сначала следуйте инструкциям компилировать и установить litesync из исходного кода или использовать Платформа.Вы можете начать с бесплатной версии.

Затем установите модуль Litesync в соответствии с версией 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


Пример кода

Модуль Litesync имеет тот же API, что и sqlite3 Модуль

import litesync as sqlite3
import json
import time

conn = sqlite3.connect('file:app.db?node=secondary&connect=tcp://server:port')

# Проверьте, готов ли БД
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)

# Теперь мы можем использовать соединение DB
...


Обновление уведомления

Ваше приложение может быть уведомлено, когда локальная база данных обновляется из -за синхронизации с удаленными узлами.Уведомление выполняется с помощью пользовательской функции.

def on_db_update(arg):
  print("Обновление получено")

conn.create_function("update_notification", 1, on_db_update)

Важно: Функция уведомления называется рабочей потоком.Приложение должно не использовать соединение БД внутри функции уведомления, и оно должно вернуться как можно быстрее!Приложение может перенести уведомление в основной поток перед возвращением.




Поиск неисправностей

Мы также можем использовать модуль Python SQLite3 на Linux и Windows

В обоих случаях модуль Python SQLite3 интерфейсы с библиотекой SQLITE системы


Linux

У нас есть 2 варианта, чтобы сделать Python для использования модифицированной библиотеки SQLite, содержащей Litesync:


A. Используйте LD_LIBRARY_PATH при открытии приложения.

LD_LIBRARY_PATH=/usr/local/lib/litesync python app.py

B. Заставьте модуль SQLite3 использовать библиотеку Litesync

sudo apt install patchelf

patchelf --replace-needed libsqlite3.so.0 liblitesync.so /usr/lib/python2.7/lib-dynload/_sqlite3.so

Чтобы проверить, было ли это успешным:

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


Windows

Замените файл sqlite3.dll в папке \ python \ dlls на один, содержащий litesync (переименование от Litesync-0.1.dll до sqlite3.dll)


Применение

В этом случае мы используем модуль SQLite3 вместо модуля Litesync

import sqlite3
import json
import time

conn = sqlite3.connect('file:app.db?node=secondary&connect=tcp://server:port')

# Проверьте, готов ли БД
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)

# Теперь мы можем использовать соединение DB
...