import_record(rec) instance.db.dbcommit() except Exception, e: instance.db.rollback() logging.exception(e) if operation in ('e', 'export'): qry = tbl.query(where=where) logging.info('%d records found', qry.count()) pkey = tbl.pkey records = data.get(pkg_table) or Bag() for n, rec in enumerate(qry.fetch()): r = dict([(k, unicodeToUTF8String(v)) for k, v in rec.items() if not k.startswith('__')]) records.addItem(unicodeToUTF8String(r[pkey]), Bag(r)) data.setItem(pkg_table, records) yaml.dump(data.asDictDeeply(), codecs.open(filename, 'wt', 'utf-8')) def unicodeToUTF8String(maybe_unicode): if isinstance(maybe_unicode, unicode): return maybe_unicode.encode('utf-8') else: return maybe_unicode if __name__ == '__main__': main.run()
import_record = tbl.insertOrUpdate if replace else tbl.insert try: for rec in data[pkg_table].values(): import_record(rec) instance.db.dbcommit() except Exception, e: instance.db.rollback() logging.exception(e) if operation in ('e','export'): qry = tbl.query(where=where) logging.info('%d records found', qry.count()) pkey = tbl.pkey records = data.get(pkg_table) or Bag() for n, rec in enumerate(qry.fetch()): r = dict([(k,unicodeToUTF8String(v)) for k,v in rec.items() if not k.startswith('__')]) records.addItem(unicodeToUTF8String(r[pkey]), Bag(r)) data.setItem(pkg_table, records) yaml.dump(data.asDictDeeply(), codecs.open(filename, 'wt','utf-8')) def unicodeToUTF8String(maybe_unicode): if isinstance(maybe_unicode, unicode): return maybe_unicode.encode('utf-8') else: return maybe_unicode if __name__ == '__main__': main.run()