From 796e7e98ec361ce000bf62b003549970b57b9ed8 Mon Sep 17 00:00:00 2001 From: CyrilM <mammar@lal.in2p3.fr> Date: Tue, 9 Oct 2018 11:20:55 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20cr=C3=A9ation=20db=20al=C3=A9atoire=20La?= =?UTF-8?q?=20cr=C3=A9ation=20de=20DB=20=C3=A9tait=20tr=C3=A8s=20longue=20?= =?UTF-8?q?car=20il=20y=20avait=20des=20insert=20into=20=20dans=20des=20bo?= =?UTF-8?q?ucles.=20Je=20les=20ai=20remplac=C3=A9s=20par=20de=20execute=5F?= =?UTF-8?q?many=20qui=20envoies=20plusieurs=20infos=20issues=20d'un=20tabl?= =?UTF-8?q?eau=20=C3=A0=20la=20fois.=20Du=20coup=20il=20n'y=20a=20plus=20q?= =?UTF-8?q?ue=204=20requ=C3=AAtes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/create_random_db.py | 77 ++++++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 27 deletions(-) diff --git a/test/create_random_db.py b/test/create_random_db.py index eb78235..fd2eca2 100644 --- a/test/create_random_db.py +++ b/test/create_random_db.py @@ -1,18 +1,20 @@ import sqlite3 import string import sys -import random +import os +from random import random, choice, randint -connection = sqlite3.connect('bdd.db', check_same_thread=False) - -def send_sql_request(request, fetchall = 1): +def send_sql_request(request, fetchall = 1, many = 0, values = []): '''Execute sql request on bdd_for_labels database. If second parameter is 0 return one line of the response else return all lines. ''' global connection cursor = connection.cursor() - cursor.execute(request) + if (many == 0): + cursor.execute(request) + else: + cursor.executemany(request, values) connection.commit() if (fetchall == 1): res = cursor.fetchall() @@ -20,24 +22,39 @@ def send_sql_request(request, fetchall = 1): res = cursor.fetchone() return (res) -def random_generator(size=6, chars=string.ascii_uppercase + string.digits): - return (''.join(random.choices(string.ascii_uppercase + string.digits, k=N))) +def create_database(): + req = [ + "CREATE TABLE IF NOT EXISTS tutos (title VARCHAR(300),link VARCHAR(500) NOT NULL,date DEFAULT CURRENT_TIMESTAMP,prescriber VARCHAR(100),CONSTRAINT pk_tutos PRIMARY KEY (link));" + ,"CREATE TABLE IF NOT EXISTS labels (id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(100) NOT NULL,father_id UNISGNED MEDIUM INT DEFAULT NULL);" + ,"CREATE TABLE IF NOT EXISTS labels_languages (id_label INTEGER,country_code VARCHAR(3),name VARCHAR(100),CONSTRAINT pk_labels_languages PRIMARY KEY(id_label, country_code));" + ,"CREATE TABLE IF NOT EXISTS tutos_labels (link VARCHAR(200) NOT NULL,id_label UNSIGNED MEDIUM INT,CONSTRAINT pk_tutos_labels PRIMARY KEY(link, id_label));" + ] + for request in req: + send_sql_request(request) + #les executer une par une + +def random_generator(size=6): + return (''.join(choice(string.ascii_uppercase + string.digits) for _ in range(size))) def create_tutos(nb_tutos): name_tutos = [] + values1 = [] for i in range (nb_tutos): - request = "INSERT INTO tutos (title, link) VALUES ('"+random_generator()+"', '"+"http://"+random_generator(9)+"')" - print (request) - send_sql_request(request) + values1.append([random_generator(), "http://"+random_generator(9)]) + request = "INSERT INTO tutos (title, link) VALUES (?, ?)" + send_sql_request(request, many=1, values=values1) def create_labels(nb_labels): + values1 = [] for i in range(nb_labels): - request = "INSERT INTO labels (name) VALUES ('"+random_generator(7)+"')" - print (request) - send_sql_request(request) + values1.append([random_generator(7)]) + request = "INSERT INTO labels (name) VALUES (?)" + send_sql_request(request, many=1, values=values1) def link_tutos_labels(nb_tutos, nb_labels): all_links = send_sql_request("SELECT link FROM tutos") + request = "INSERT INTO tutos_labels (link, id_label) VALUES (?, ?)" + values1 = [] for i in range (nb_tutos): nb_local_labels = randint(1, 5) all_id_tab = [] @@ -45,29 +62,35 @@ def link_tutos_labels(nb_tutos, nb_labels): id_label = randint(1, nb_labels) while (id_label in all_id_tab): id_label = randint(1, nb_labels) - request = "INSERT INTO tutos_labels (link, id_label) VALUES ('"+all_links[i][0]+"', "+str(id_label)+");" - print(request) - send_sql_request(request) + values1.append([all_links[i][0], id_label]) all_id_tab.append(id_label) - print (str(i)+"/"+str(nb_tutos)) + # print (str(i)+"/"+str(nb_tutos)) + send_sql_request(request, many=1, values=values1) def add_labels_language(nb_labels): labels = send_sql_request("SELECT id, name FROM labels") + values1 = [] for i in range(nb_labels): - request = "INSERT INTO labels_languages (id_label, country_code, name) VALUES ("+str(labels[i][0])+", 'U', '"+labels[i][1]+"')" - print(request) - send_sql_request(request) - print (str(i)+"/"+str(nb_labels)) + inter = [str(labels[i][0]), 'U', labels[i][1]] + values1.append(inter) + request = "INSERT INTO labels_languages (id_label, country_code, name) VALUES (?, ?, ?)" + send_sql_request(request, many=1, values=values1) -if (len(sys.argv) == 2): - print("exec [nb_tutos] [nb_labels]") if (sys.argv[1] == "-h") else print("bad parameters") -elif (len(sys.argv) == 3): - nb_tutos = int(sys.argv[1]) - nb_labels = int(sys.argv[2]) +def create_all_db(db_name, nb_tutos, nb_labels): + create_database() create_tutos(nb_tutos) create_labels(nb_labels) add_labels_language(nb_labels) link_tutos_labels(nb_tutos, nb_labels) + +if (len(sys.argv) == 2): + print("exec [db_name] [nb_tutos] [nb_labels]") if (sys.argv[1] == "-h") else print("bad parameters") +elif (len(sys.argv) == 4): + db_name = sys.argv[1] + nb_tutos = int(sys.argv[2]) + nb_labels = int(sys.argv[3]) + connection = sqlite3.connect(db_name, check_same_thread=False) + create_all_db(db_name, nb_tutos, nb_labels) else: - print ("bad parameters, use \"create_random_db.py [nb_tutos] [nb_labels]\"") + print ("bad parameters, use \"create_random_db.py [db_name] [nb_tutos] [nb_labels]\"") -- GitLab