2013-08-09 3 views
2

Учитывая конфигурацию, состоящую из нескольких значений, например displayName и startDate, которые являются постоянными большую часть времени, но также должны быть доступны для редактирования через дополнительную страницу приложения Google, каким будет лучший способ сохранить и изменить эту конфигурацию?Как сохранить и обновить конфигурацию в Google App Engine (Python)

На данный момент у меня есть что-то вроде этого:

class Configuration(ndb.Model): 
    displayName = ndb.StringProperty() 
    starting = ndb.DateTimeProperty() 

и модифицировать его так:

allConfigurations = Configuration.query().fetch(1) 
current = None 
try: 
    current = allConfigurations[0] 
except: 
    current = Configuration() 
current.displayName = self.request.get('newDisplayName') 
current.starting = self.request.get('newStartingDate') 
current.put() 

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

Редактировать: В другой среде я, возможно, просто использовал файл .ini для этого. Я в основном ищу эквивалент движка Google.

+0

Он не извлекает все конфигурации. Только один. –

+0

Из того, что я понимаю, query() извлекает все Конфигурации, fetch (1) ограничивает набор результатов равным 1. Но это все еще список. – DaClown

+0

Почему бы не использовать 'get()' вместо этого? какой смысл выбирать случайную конфигурацию, а затем, независимо от того, что является результатом этого блока «try-except», перезапишите значения? что это 'allValues'? –

ответ

2

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

current = Configuration.query().get() or Configuration() 
current.displayName = self.request.get('newDisplayName') 
current.starting = self.request.get('newStartingDate') 
current.put() 

, но я не мог помочь мне и пришлось бы позволить перемежаются конфиги ..

id = self.request.get('id') or 'default' 
config = Configuration.get_by_id(id) or Configuration(id = id) 
config.displayName = self.request.get('newDisplayName') 
config.starting = self.request.get('newStartingDate') 
config.put() 
+0

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

1

на GAE файловая система только для чтения, это означает, что вы не можете написать в конфигурационном файле, и что ваш путь это правильный путь.

Если вы хотите, чтобы упростить код можно использовать идентификатор строки и получить его с помощью метода get_or _insert()

current = Configuration.get_or_insert('current') 
current.displayName = self.request.get('newDisplayName') 
current.starting = self.request.get('newStartingDate') 
current.put() 
+0

Спасибо, я поменяю свой код соответствующим образом. – DaClown

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