Импорт данных Sqlite в Google App Engine

У меня есть относительно обширная база данных sqlite, которую я хотел бы импортировать в свое приложение Python для Google App Engine.

Я создал свои модели с помощью API appengine, которые близки, но не совсем идентичны существующей схеме. Я написал скрипт импорта для загрузки данных из sqlite и создания/сохранения новых объектов appengine, но среда appengine блокирует доступ к библиотеке sqlite. Этот скрипт предназначен только для запуска в моем локальном экземпляре ядра приложения, и оттуда я надеюсь отправить данные в Google.

Я неправильно подхожу к этой проблеме или есть способ импортировать библиотеку sqlite во время работы в среде локального экземпляра?


person Keck    schedule 20.05.2010    source источник


Ответы (4)


Я бы сделал подходящие CSV-файлы из данных Sqlite в отдельном скрипте, а затем использовал массовая загрузка для отправки данных из CSV-файлов в движок приложения.

person Alex Martelli    schedule 20.05.2010

Если вам нужен доступ к вашему хранилищу данных за пределами среды App Engine (например, если вам нужно использовать библиотеки, отсутствующие в App Engine, или выполнять другие действия, которые App Engine не поддерживает с хранилищем данных), лучшим вариантом является Remote Api.

Здесь есть отличное руководство по этому вопросу: http://code.google.com/appengine/articles/remote_api.html

По сути, вы импортируете модуль remote_api, проходите аутентификацию в Google для доступа к вашему хранилищу данных, затем запускаете команды доступа к данным (запрос, обновление, удаление и т. д.), как обычно в движке приложения.

person RDS    schedule 02.04.2011

Согласно Google, вы делаете это в обратном порядке. Приложение должно получать от вас данные там, где у вас в любом случае больше гибкости при переходе на новую модель.

person msw    schedule 20.05.2010

У меня не возникло проблем с импортом pysqlite2, чтением данных, их преобразованием и записью в AppEngine с помощью файла remote_api.

Какую ошибку вы видите?

person dar    schedule 20.05.2010