from google.appengine.ext import db import storage __all__ = ['getobj', 'clear_table', 'dumprow', 'dumpquery'] def getobj(key): return db.get(db.Key(key)) def transaction(func): def f(*args, **kwargs): return db.run_in_transaction(func, *args, **kwargs) return f def clear_table(table): if isinstance(table, str): rows = db.GqlQuery("SELECT * FROM %s" % table) else: rows = table.all() for r in rows: r.delete() def dumprow(r): import datetime a = storage.Storage({}) for k in r.fields().keys(): v = getattr(r, k) a['id'] = r.key().id() a['key'] = str(r.key()) if isinstance(v, str): a[k] = str(v) elif isinstance(v, unicode): a[k] = unicode(v) elif isinstance(v, datetime.datetime): a[k] = v.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(v, datetime.date): a[k] = v.strftime('%Y-%m-%d') elif isinstance(v, datetime.time): a[k] = v.strftime('%H:%M:%S') elif isinstance(v, (int, float, list)): a[k] = v else: a[k] = str(v) return a def dumpquery(query): s = [] for r in query: s.append(dumprow(r)) return s