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
...