2009-04-14 2 views
0

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

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

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

Любые идеи?

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

ответ

0

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

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

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

+0

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

+0

Да, вам нужен какой-то идентификатор, который у вас есть, и он не будет изменен. – digitaljoel

0

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

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

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

myentity.key().name() 

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

Смежные вопросы