Как я могу связать изображения с сущностями в Google App Engine - PullRequest
0 голосов
/ 14 апреля 2009

Я работаю над приложением Google App Engine и дошел до того, что хочу связать изображения в файловой системе с объектами в базе данных.

Я использую сценарий bulkupload_client.py для загрузки объектов в базу данных, но застрял, пытаясь выяснить, как связать файлы файловой системы с объектами. Если у объекта есть следующие изображения: главный, подробный, передний, задний I думаю Мне может понадобиться схема именования, подобная этой: <entity_key> _ main.jpg

Полагаю, я мог бы создать GUID для каждого объекта и использовать его, но я бы предпочел не делать этого.

Есть идеи?

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

Ответы [ 3 ]

1 голос
/ 15 апреля 2009

Существует руководство GAE по подаче динамических изображений с помощью Google App Engine . Включает пояснения и загружаемый исходный код.

0 голосов
/ 15 апреля 2009

Если вы загружаете изображения статически, вы можете использовать схему на основе ключей, если хотите: просто назначьте имя ключа сущностям и используйте его для поиска связанных изображений. Вы указываете имя ключа (в версии Python) в качестве аргумента конструктора key_name для класса сущности:

myentity = EntityClass(key_name="bleh", foo="bar", bar=123)
myentity.put()

и вы можете получить имя ключа для сущности следующим образом:

myentity.key().name()

Похоже, что рассматриваемые сущности хранилища данных являются в основном статическим содержимым, поэтому, возможно, вам лучше просто кодировать их как литералы в источнике и, таким образом, иметь их в памяти или загружать их во время выполнения из локальных файлов данных, минуя необходимость запросить хранилище данных для них?

0 голосов
/ 14 апреля 2009

Я вижу два варианта, основанных на моих очень ограниченных знаниях GAE.

Во-первых, вы не можете ничего записать в файловую систему в GAE, верно? Это будет означать, что любые изображения, которые вы хотите включить, должны быть загружены как часть вашего веб-приложения и, следовательно, иметь статическое имя и структуру каталогов, которые известны и неизменны. В этом случае ваша идея _main.jpg ИЛИ /entity_key/main.jpg будет работать нормально.

Второй вариант - хранить изображения в виде BLOB-объектов в базе данных. Это может позволить загружать изображения динамически, а не загружать новую версию веб-приложения каждый раз, когда вам нужно обновить изображения. Это быстро въедет в ваше свободное пространство базы данных. Вот некоторая информация о подаче фотографий из базы данных. http://code.google.com/appengine/articles/images.html

...