from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from model import * path = "root:helloworld@localhost/piztor" class UserData: def __init__(self, username, nickname, password, comp_no, sec_no, sex, perm, sub): self.username = username self.nickname = nickname self.password = password self.comp_no = int(comp_no) self.sec_no = int(sec_no) self.sex = int(sex) self.perm = perm self.sub = sub def create_database(): engine = create_engine('mysql://' + path, echo = True) Base.metadata.drop_all(engine) Base.metadata.create_all(engine) def find_or_create_group(comp_no, sec_no, session): gid = UserModel.to_gid(comp_no, sec_no) q = session.query(GroupInfo).filter(GroupInfo.id == gid) entry = q.first() if not entry: entry = GroupInfo(gid = gid) return entry def import_user_data(data): engine = create_engine('mysql://' + path, echo = True) Session = sessionmaker(bind = engine) session = Session() for user in data: um = UserModel(username = user.username, nickname = user.nickname, sex = user.sex, comp_no = user.comp_no, sec_no = user.sec_no, perm = user.perm) for cn, sn in user.sub: print cn, sn g = find_or_create_group(int(cn), int(sn), session) um.sub.append(g) um.auth = UserAuth(user.password) um.location = LocationInfo(lat = 0, lng = 0) session.add(um) session.commit() if __name__ == '__main__': from sys import argv, exit if len(argv) != 2: print "Usage: " + argv[0] + " FILE" exit(0) data = list() with open(argv[1], 'r') as f: while True: line = f.readline().split() if len(line) == 0: break line2 = f.readline().split() idx = 0 sub = list() while idx < len(line2): sub.append((line2[idx], line2[idx + 1])) idx += 2 data.append(UserData(username = line[0], nickname = line[1], password = line[2], comp_no = line[3], sec_no = line[4], sex = line[5], perm = line[6], sub = sub)) create_database() import_user_data(data)