def generate_fixed_entity_relation(): entities = config.db['entity'] conn, cursor = models.connect_db() for ent in entities: e_tag = ent['tag'] if e_tag['source'] == 'from-db' and e_tag['range'] == [1, 1] and len( e_tag['content']): name = ent['alias'] ref = e_tag['content'][0] table = name + '_' + ref cursor.execute('select * from %s' % (name)) name_list = [x[0] for x in cursor.fetchall()] cursor.execute('select * from %s' % (ref)) ref_list = [x[0] for x in cursor.fetchall()] ref_end = len(ref_list) - 1 name_ref_list = [(name_list[i], ref_list[random.randint(0,ref_end)]) \ for i in range(len(name_list))] try: cursor.execute('insert into %s values (?,?)' % (table), table_list) conn.commit() except Exception as e: models.close_db(conn, cursor) raise e models.close_db(conn, cursor)
def generate_fixed_entity(): entities = config.db['entity'] conn, cursor = models.connect_db() for ent in entities: if ent['amount'] == 'fixed': name = ent['alias'] table_list = [name + str(i + 1) for i in range(ent['range'][0])] try: cursor.execute('insert into %s values (?)' % (name), table_list) conn.commit() except Exception as e: models.close_db(conn, cursor) raise e models.close_db(conn, cursor)
def clean_up(error): close_db()
"""SocialBots A collection on different social media bots Created: 2019 Author: Henrik A. Christensen """ from models import close_db, open_db from socialmediabot import SocialMediaBot if __name__ == '__main__': open_db() smb = SocialMediaBot() smb.run() close_db()
def generate_dynamic_entity(dic): table_name = dic['alias'] distr_list = dic['stage'] relations = config.db['relation'] conn, cursor = models.connect_db() cursor.execute('select count(*) from %s' % (table_name)) start_index = cursor.fetchall()[0][0] + 1 counter = 0 for rela in relations: if rela['source'] == table_name and rela['target'] == table_name: break # for test run time time_start = time.time() fake_size = start_index - 1 gen_start_i = start_index gen_rela_num = 0 fg = 0 for x in range(dic['count']): try: distr = distr_list[counter] gen_num = 0 if distr['type'] == 'gaussian': gen_num = round(random.gauss(distr['mu'], distr['sigma'])) else: gen_num = round(random.randint(distr['min'], distr['max'])) for i in range(start_index, start_index + gen_num): item_id = table_name + str(i) item_tag = '' # TODO: generate tags data.user_data.add((item_id, item_tag)) # TODO: just for follow, hard code # should find relations including table_name fake_size += gen_num gen_rela_num += gen_num change_list = [gen_start_i, gen_rela_num, fake_size] # print('******************************************************') # print('in_degree_node', data.degree_node) # print('in info', [len(x) for x in data.degree_node]) # print('out_degree_noe', data.out_degree_node) # print('out info', [len(x) for x in data.out_degree_node]) # print('======================================================') fg = generate_dynamic_relation(change_list, table_name, rela) # print('======================================================') time.sleep(config.delay_time) counter = (counter + 1) % (len(distr_list)) start_index = len(data.user_data) + 1 if fg == 0: gen_start_i = start_index gen_rela_num = 0 # print(start_index) except Exception as e: # models.close_db(conn, cursor) raise e while fg == 1: try: distr = distr_list[counter] gen_num = 0 if distr['type'] == 'gaussian': gen_num = round(random.gauss(distr['mu'], distr['sigma'])) else: gen_num = round(random.randint(distr['min'], distr['max'])) for i in range(start_index, start_index + gen_num): item_id = table_name + str(i) item_tag = '' # TODO: generate tags data.user_data.add((item_id, item_tag)) # TODO: just for follow, hard code # should find relations including table_name fake_size += gen_num gen_rela_num += gen_num change_list = [gen_start_i, gen_rela_num, fake_size] # print('======================================================') fg = generate_dynamic_relation(change_list, table_name, rela) # print('======================================================') time.sleep(config.delay_time) counter = (counter + 1) % (len(distr_list)) start_index = len(data.user_data) + 1 if fg == 0: gen_start_i = start_index gen_rela_num = 0 except Exception as e: raise e with open('graph_size.py', 'w') as f: f.write(str(fake_size)) print('elapsed %f sec. nodes: %d' % (time.time() - time_start, fake_size)) try: cursor.executemany('insert into %s values (?,?)' % table_name, list(data.user_data)) cursor.executemany("insert into %s values (?,?,?)" % rela['alias'], list(data.follow_data)) conn.commit() # print([len(x) for x in data.degree_node]) except Exception as e: models.close_db(conn, cursor) raise e
def on_teardown(error): models.close_db(error)