From 17cc4ee6b5d9e08759f755ed1d13e703ab06152e Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 6 Dec 2016 21:20:41 +0000 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20?= =?UTF-8?q?=D0=B8=D0=B7=20nodeny?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- load_from_nodeny.py | 48 +++++++++++++++++++++++++++++++++++++++++++++ save_from_nodeny.py | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100755 load_from_nodeny.py create mode 100755 save_from_nodeny.py diff --git a/load_from_nodeny.py b/load_from_nodeny.py new file mode 100755 index 0000000..082c8bf --- /dev/null +++ b/load_from_nodeny.py @@ -0,0 +1,48 @@ +#!/bin/env python2 +# coding=utf-8 + +import os +import MySQLdb +from json import dumps + + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") + + db = MySQLdb.connect(host="localhost", user="root", passwd="ps", db="nodeny", charset='utf8') + cursor = db.cursor() + + result = dict() + + # выбираем абонентов + sql = r"SELECT users.name, users.fio, data0._adr_telefon, dictionary.v, data0._adr_house, data0._birthday, users.grp FROM users LEFT JOIN data0 ON (data0.uid=users.id) LEFT JOIN dictionary ON (dictionary.k=data0._adr_street AND dictionary.type='street')" + cursor.execute(sql) + result['users'] = list() + res = cursor.fetchone() + while res: + result['users'].append({ + 'name': res[0], + 'fio': res[1], + 'tel': res[2], + 'addr': u"ул. %s д. %s" % (res[3], res[4]), + 'birth': int(res[5]), + 'grp': int(res[6]) + }) + res = cursor.fetchone() + + # выбираем группы + sql = r'SELECT grp_id, grp_name FROM user_grp' + cursor.execute(sql) + result['groups'] = list() + res = cursor.fetchone() + while res: + result['groups'].append({ + 'gid': int(res[0]), + 'gname': res[1] + }) + res = cursor.fetchone() + + db.close() + f = open('dump.json', 'w') + f.write(dumps(result, ensure_ascii=False).encode('utf8')) + f.close() diff --git a/save_from_nodeny.py b/save_from_nodeny.py new file mode 100755 index 0000000..065265e --- /dev/null +++ b/save_from_nodeny.py @@ -0,0 +1,40 @@ +#!/bin/env python2 +# coding=utf-8 + +import os +from json import loads +import django +#from django.db.utils import IntegrityError + + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") + django.setup() + from abonapp.models import Abon, AbonGroup + + f = open('dump.json', 'r') + dat = f.readlines() + f.close() + + dat = loads(dat[0]) + for dt in dat['groups']: + try: + grp = AbonGroup.objects.get(title=dt['gname']) + except AbonGroup.DoesNotExist: + grp = AbonGroup(title=dt['gname']) + grp.save() + dt['obj'] = grp + + for dt in dat['users']: + grp = filter(lambda gr: dt['grp']==gr['gid'], dat['groups']) + grp = grp[0]['obj'] if len(grp)>0 else None + try: + abon = Abon.objects.get(username=dt['name']) + except Abon.DoesNotExist: + abon = Abon(username=dt['name']) + abon.fio = dt['fio'] + abon.telephone=dt['tel'] + abon.address=dt['addr'] + abon.group=grp + abon.save() + print abon.username, abon.fio, abon.group