Использование pouchdb с python

Я занимаюсь исследованием того, как взять приложение python, написанное на django или web2py, и использовать его в качестве настольного приложения. А для базы данных удаленно я буду использовать CouchDB из-за ее возможностей репликации. Для рабочего стола мне нужно найти способ интегрировать pouchdb в приложение, но, если не считать домашней страницы, в которой говорится о включении файла pouchdb.js, я не могу найти никаких документов о том, как использовать его с python. И как вообще настроить синхронизацию локального хоста с удаленным сервером.

Я надеялся, что кто-то может пролить свет на то, как это сделать. Что касается django/web2py, я еще не уверен, какой из них я хочу использовать, но сузил список до этих двух.

Идея самого приложения заключается в том, что у меня есть веб-сайт, на котором доступны все обычные функции. И пользователь может установить пакет локально на свой рабочий стол из установщика. Эта локальная копия будет иметь подмножество функций веб-сайта и локально синхронизировать некоторые данные из экземпляра pouchdb с удаленным сервером. достаточно, чтобы иметь возможность полностью взаимодействовать с БД в автономном режиме.


person skift    schedule 03.09.2012    source источник


Ответы (2)


Для этой цели несколько дней назад я создал Python-PouchDB. Он запускает PouchDB внутри QtWebKit через PyQt4, PyQt5 или PySide (вам нужно поставить один из них вместе с вашим приложением) и предоставляет приятный (как синхронный, так и асинхронный) интерфейс Python.

Вы можете установить его, выполнив:

pip install python-pouchdb

(или просто извлекая каталог pouchdb из источника, ссылку на который вы можете найти на веб-сайте.)

Пример использования:

>>> import pouchdb
>>> environment = pouchdb.setup()
>>> db = environment.PouchDB("test")
>>> db.put({"_id": "mytest"})
{u'ok': True, u'rev': u'...', u'id': u'mytest'}
>>> db["mytest"] #shorthand for db.get()
{u'_rev': u'...', u'_id': u'mytest'}
>>> db.destroy()
person marten-de-vries    schedule 20.08.2013

PouchDB работает на IndexedDB в браузере с планами на будущее по поддержке WebSQL, но в целом идея заключается в том, что он основывается на возможностях локальной базы данных, предоставляемых браузером.

Если я правильно понял, вы хотите иметь доступ к нему из Python? Я не думаю, что это будет возможно, хотя найти оболочку Python вокруг движка JavaScript может быть возможно, но вы не сможете получить доступ к базе данных, поддерживаемой браузером.

Вам также следует подумать о создании CouchApp, хотя это все равно не даст вам возможности использовать шаблоны Django.

По сути, вы должны структурировать свое приложение так, чтобы оно использовало только шаблоны на основе JavaScript (Mustache, Handlebars и т. д. и т. д.) и взаимодействовало с вашим API с помощью интерфейса REST, поэтому вам не нужно запускать движок Python на стороне клиента. оффлайн приложение. Это все еще может быть выполнимо, но если вам нужно связать тонны технологий с вашим приложением, это будет тяжелая загрузка.

person dain    schedule 16.09.2012
comment
Да, CouchApps — это круто, но я не думаю, что это позволит мне иметь тот уровень инфраструктуры, который мне понадобится для моего приложения, поскольку мне понадобится настоящий настольный клиент. У меня может быть просто сценарий установки в моем установщике, который загружает и настраивает диван для конечного пользователя, еще не уверен. - person skift; 17.09.2012
comment
Puchdb также не будет работать, так как мне могут понадобиться эти данные вне основного клиента. Например, если бы у нас когда-либо были другие внешние инструменты для управления или мониторинга базы данных. - person skift; 20.09.2012
comment
Да, это то, что я пытался сказать, если вы хотите получить доступ к базе данных вне браузера, PouchDB не для вас. Вы можете воспроизвести его, но вы определенно не сможете создать приложение Django таким образом. - person dain; 20.09.2012