Skip to content

Instantly share code, notes, and snippets.

@richardkiss
Last active December 11, 2015 08:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save richardkiss/4576523 to your computer and use it in GitHub Desktop.
Save richardkiss/4576523 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import sys
import time
import csv
import sqlite3
from google.appengine.datastore import entity_pb
from google.appengine.api import datastore
from django.db import transaction
from home.models import Alias, Person
from operations.models import Statistic
def export_Person(obj, key_name):
# create a Django model instance based on Google Entity obj
PROPS = "create_time nickname website_link photo_url last_access time_to_post time_zone_offset_minutes fb_access_token location".split()
p = Person(id=key_name)
for prop in PROPS:
setattr(p, prop, obj.get(prop))
p.save()
print p
def export_Statistic(obj, key_name):
# remove for clarity
# very similar to export_Person
pass
EXPORT_LOOKUP_1 = {
'Person' : export_Person,
'Statistic' : export_Statistic,
}
def export_Alias(obj, key_name):
# remove for clarity
# very similar to export_Person
pass
EXPORT_LOOKUP_2 = {
'Alias' : export_Alias,
# other entities removed for clarity
}
def main():
ct = 0
conn = sqlite3.connect("./backups/laffq.db", isolation_level=None)
for phase in (EXPORT_LOOKUP_1, EXPORT_LOOKUP_2):
cursor = conn.cursor()
cursor.execute('select id, value from result')
with transaction.commit_on_success():
for entity_id, entity in cursor:
entity_proto = entity_pb.EntityProto(contents=entity)
obj = datastore.Entity._FromPb(entity_proto)
kind = obj.key().kind()
key_name = obj.key().id_or_name()
f = phase.get(kind)
if f:
f(obj, key_name)
print "done"
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment