Python
首先按照说明编译并安装 litessync从源代码中或使用预先编译的binaries 为您平台。您可以从免费版本开始。
然后根据Python版本安装LitesNC模块:
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)
# 现在我们可以使用数据库连接
...
更新通知
由于与远程节点同步,可以在更新本地数据库时通知您的应用程序。通知是通过用户定义的函数完成的。
def on_db_update(arg):
print("更新收到")
conn.create_function("update_notification", 1, on_db_update)
重要:工人线程调用通知功能。该应用程序应不使用通知功能内的DB连接,并且必须尽可能快地返回!该应用程序可以在返回之前将通知转移到主线程中。
故障排除
我们还可以在Linux和Windows上使用Python的SQLite3模块
在这两种情况下
Linux
我们有2个选项使Python使用包含LITESNC的修改后的SQLite库:
A. 打开应用程序时使用 LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/lib/litesync python app.py
B. 使SQLITE3模块使用Litessync库
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
将文件夹 \Python\DLLs 中的 sqlite3.dll 文件替换为包含 LiteSync 的文件(从 litesync-0.1.dll 重命名为 sqlite3.dll)
用法
在这种情况下,我们使用sqlite3模块而不是litesnc模块
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)
# 现在我们可以使用数据库连接
...