Czy istnieje dobry sposób na przechowywanie słownika Python w magazynie danych? Chcę zrobić coś takiego:Jak umieścić słownik w magazynie danych?
from google.appengine.ext import db
class Recipe(db.Model):
name = db.StringProperty()
style = db.StringProperty()
yeast = db.StringProperty()
hops = db.ListofDictionariesProperty()
Oczywiście ta ostatnia linia w rzeczywistości nie działa. Potrzebuję przeskoków do listy par klucz-wartość, gdzie klucz jest zawsze łańcuchem, a wartość może być ciągiem, int lub float, ale nie widzę niczego, co pozwoliłoby mi na to w Property classes.
JSON jest generalnie bezpieczniejsze niż eval. –
Prawdopodobnie nie będę musiał sprawdzać tego pola, ale podoba mi się, że mam opcję. Także, popraw mnie, jeśli się mylę, ale czy używanie repr i używanie JSON nie ma takiego samego wyjścia w tym przypadku? –
Nawet z "bezpieczną ewaldą", 'repr' może być niebezpieczne. Sam Guido wątpi, że mógłbyś napisać taką funkcję. Zobacz http://code.google.com/p/googleappengine/issues/detail?id=671. JSON jest prostszy od Pythona i mam więcej pewności, że parser JSON nie byłby podatny na zagrożenia w sposób, w jaki "eval" może być. – lemnar