col, key = e field = 'doc["%s"]' % col view.append(' %s && emit(["%s" + %s, 1], null);' % \ (field, key, field)) for col in t.rh_emits: key = "%s.%s" % (t.name, col) field = 'doc["%s"]' % col view.append(' %s && emit(["%s" + %s, 0], null);' % \ (field, key, field)) view.append(' return;') view.append(' }') view.append('}') return "\n".join(view) if __name__ == '__main__': import sys import json from jsonschema import json2schema schema = json2schema(json.load(sys.stdin)) view = compute_view(schema) print json.dumps({"language":"javascript", "views": {"joins": {"map": view, "reduce": "_count"} } })
from jsonschema import json2schema def list_relationships(schema): out = [] for table in schema.tables.values(): if not table.include: continue rels = ["n %s.%s -> %s.%s" % \ (table.name, r.local_column, r.table, r.remote_column) for r in table.relationships.values() if schema.tables[r.table].include] out.extend(rels) return "\n".join(out) if __name__ == '__main__': import sys import json schema = json2schema(json.load(sys.stdin)) print list_relationships(schema)
def load_value(doc, col, row): if col.name in RESERVED_COLUMN_NAMES: raise ValueError() value = row[col.name] if value is not None: doc[col.name] = value if __name__ == "__main__": import getopt import sys import json from jsonschema import json2schema optlist, args = getopt.getopt(sys.argv[1:], 'u:p:') options = dict(optlist) username = options["-u"] password = options["-p"] mysqldbname = args[0] couchdbname = args[1] schemafile = args[2] schema = json2schema(json.load(open(schemafile))) mysql = MySQLdb.connect(user=username, passwd=password, db=mysqldbname, charset = "utf8", use_unicode = True, conv=FIELD_CONVERSIONS) couch = couchdb.Server()[couchdbname] convert(mysql, couch, schema)