· 8 years ago · Dec 16, 2017, 08:32 PM
1# -*- coding: UTF-8 -*-
2import MySQLdb
3from numpy import random as r
4import numpy as np
5import random
6from random import randint
7import names
8
9def jako_string(x):
10 return "'" + str(x) + "'"
11
12
13def jako_unixtime(x):
14 return "FROM_UNIXTIME(" + str(x) + ")"
15
16def sec_to_time(x):
17 return "SEC_TO_TIME(" + str(x) + ")"
18
19ITERACJE = 15 # Mnożnik liczby rekordów
20
21# Losowanie płci
22
23
24# Listy słów
25# IMIONA = ['Jan', 'Małgorzata',]
26# NAZWISKA = ['Kowalski', 'Nowak',]
27DOMENY_EMAIL = ['gmail.com', 'wp.pl', 'o2.pl', 'interia.pl', 'yahoo.com', 'onet.pl', 'outlook.com', 'about.com',
28 'ahaa.dk', 'adexec.com']
29MIASTA = ['Wrocław', 'Warszawa', 'Zielona Góra', 'Szczecin', 'Rzeszów', 'Kraków', 'Gdansk', 'Gdynia', 'Sopot',
30 'Katowice', 'Bialystok', 'Lublin', 'Gorzow', 'Poznan', 'Torun', 'Bydgoszcz', 'Inowroclaw', 'Czestochowa',
31 'Opole', 'Legnica']
32ULICE = ['Kwiatowa', 'Różana', 'Owocowa', 'Zielona', 'Niebiesla', 'Żółta', 'Weselna', 'Żałobna', 'Ptasia', 'Botaniczna', 'Europejska', 'Koreańska',
33 'Krajlievska', 'Pionierska']
34TYPY_SPRZETU = ["Rzutnik", "Mikrofon", "Ekran", "Myszka", "Klawiatura", "Komputer", "Wskaźnik", "Głośniki", "Tablet", "Laptop", "Przejściówki"]
35PRODUCENCI_SPRZETU = ["Sony", "Microsoft", "Samsung", "Apple", "Philips", "LG", "Huawei", "Panasonic", "Ericsson", "Unitra",
36 "Xiaomi", "Dell", "Acer", "Asus", "Lenovo", "HTC", "Motorola", "Toshiba", "Siemens"]
37LOREM = ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit', 'aliquam', 'elementum',
38 'viverra', 'leo', 'vitae', 'auctor', 'curabitur', 'pellentesque', 'pulvinar', 'leo', 'non', 'ultricies',
39 'arcu', 'vehicula', 'at', 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',
40 'morbi', 'sed', 'quam', 'dictum', 'feugiat', 'est', 'in', 'dignissim', 'libero', 'vestibulum', 'eget',
41 'tristique', 'sapien', 'eget', 'commodo', 'tortor', 'nulla', 'facilisi', 'Integer', 'rutrum', 'ligula', 'non',
42 'nibh', 'egestas', 'accumsan', 'pellentesque', 'eu', 'fringilla', 'augue', 'pellentesque', 'ultrices', 'arcu',
43 'id', 'nibh', 'accumsan', 'tristiqueCurabitur', 'non', 'mauris', 'ut', 'ante', 'eleifend', 'mattis',
44 'pellentesque', 'ullamcorper', 'purus', 'id', 'cursus', 'faucibus', 'enim', 'libero', 'tempus', 'diam', 'et',
45 'hendrerit', 'odio', 'urna', 'id', 'dolor', 'Cras', 'dapibus', 'est', 'at', 'placerat', 'pellentesque',
46 'Proin', 'nulla', 'ipsum', 'semper', ]
47ALFABET = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'w',
48 'x', 'y', 'z']
49
50instrukcje = []
51
52for i in range(3 * ITERACJE):
53 instrukcje.append({
54 'tabela': 'Managerowie',
55 'atrybuty': ['Nazwisko', 'Imie', 'Pesel', 'Adres', 'Email', 'NrTelefonu'],
56 'wartosci': [
57 jako_string(names.get_last_name()),
58 jako_string(names.get_first_name(gender=r.choice(['male', 'female']))),
59 jako_string(''.join([str(r.randint(0, 9)) for j in range(11)])),
60 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
61 jako_string(''.join(r.choice(ALFABET, r.randint(4, 10))) + "@" + r.choice(DOMENY_EMAIL)),
62 jako_string(r.randint(100000000, 999999999))
63 ],
64 })
65
66for i in range(8 * ITERACJE):
67 instrukcje.append({
68 'tabela': 'Sponsorzy',
69 'atrybuty': ['Nazwa', 'Adres', 'Miasto', 'NrTelefonu', 'Email', 'Nip'],
70 'wartosci': [
71 jako_string(''.join(r.choice(ALFABET, r.randint(3, 29))).capitalize()),
72 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
73 jako_string(r.choice(MIASTA)),
74 jako_string(r.randint(100000000, 999999999)),
75 jako_string(''.join(r.choice(ALFABET, r.randint(4, 10))) + "@" + r.choice(DOMENY_EMAIL)),
76 jako_string(''.join([str(r.randint(0, 9)) for j in range(10)]) if (r.random() >= 0.3) else 'NULL')
77 ],
78 })
79
80for i in range(5 * ITERACJE): # Konferencje
81 data_rozp = r.randint(1104537600, 1510398547) # unixtime od 2005-01-01 do 2017-11-11
82 data_zak = data_rozp + 10000 + r.randint(600000) # około tydzień później
83 instrukcje.append({
84 'tabela': 'Konferencje',
85 'atrybuty': ['Nazwa', 'Opis', 'DataRozpoczecia', 'DataZakonczenia', 'IdManagera'],
86 'wartosci': [
87 jako_string((' '.join([r.choice(LOREM) for j in range(2)]) + " " + str(r.randint(1, 15))).capitalize()),
88 jako_string((' '.join([r.choice(LOREM) for j in range(40)])).capitalize()),
89 jako_unixtime(data_rozp),
90 jako_unixtime(data_zak),
91 str(r.randint(3 * ITERACJE))
92 ],
93 })
94 for j in range(5): # Panele
95 data_panelu = data_rozp + r.randint(data_zak - data_rozp - 1000) + 1000
96 id_sali = jako_string(str(r.randint(1, 998)) + r.choice(ALFABET))
97 godz_roz_panelu = r.randint(0, 60000)
98 godz_zak_panelu = godz_roz_panelu + r.randint(1000, 26400)
99 instrukcje.append({
100 'tabela': 'Panele',
101 'atrybuty': ['Tytul', 'Data', 'GodzinaRozpoczecia', 'GodzinaZakonczenia', 'IdKonferencji', 'IdSali'],
102 'wartosci': [
103 jako_string(''.join(r.choice(ALFABET, r.randint(3, 29))).capitalize()),
104 jako_unixtime(data_panelu),
105 sec_to_time(godz_roz_panelu),
106 sec_to_time(godz_zak_panelu),
107 str(i),
108 str(r.randint(6*ITERACJE))
109 ],
110 })
111 for k in range(5): # Wyklady
112 godz_roz_wyk = godz_roz_panelu + r.randint(godz_zak_panelu - godz_roz_panelu)
113 godz_zak_wyk = godz_roz_wyk + r.randint(godz_zak_panelu - godz_roz_wyk)
114 instrukcje.append({
115 'tabela': 'Wyklady',
116 'atrybuty': ['Tytul', 'GodzinaRozpoczecia', 'GodzinaZakonczenia', 'IdPanelu'],
117 'wartosci': [
118 jako_string(''.join(r.choice(ALFABET, r.randint(3, 29))).capitalize()),
119 sec_to_time(godz_roz_wyk),
120 sec_to_time(godz_zak_wyk),
121 str(r.randint(5 * ITERACJE))
122 ],
123 })
124konf_ids = random.sample(range(5*ITERACJE), 5*ITERACJE)
125spon_ids = random.sample(range(8*ITERACJE), 5*ITERACJE)
126for i in range(5 * ITERACJE):
127 instrukcje.append({
128 'tabela': 'Finansowanie',
129 'atrybuty': ['IdKonferencji', 'IdSponsora', 'Kwota', 'Uwagi'],
130 'wartosci': [
131 str(konf_ids[i]),
132 str(spon_ids[i]),
133 str(r.randint(100000) / 100),
134 jako_string(
135 ((' '.join([r.choice(LOREM) for j in range(40)])).capitalize()) if (r.random() >= 0.3) else 'NULL')
136 ],
137 })
138
139for i in range(5 * ITERACJE):
140 instrukcje.append({
141 'tabela': 'Uczestnictwo',
142 'atrybuty': ['IdKonferencji', 'IdUczestnika'],
143 'wartosci': [
144 str(r.randint(5 * ITERACJE)),
145 str(r.randint(100 * ITERACJE))
146 ],
147 })
148
149pairs4 = [(x, y) for x in range(8*ITERACJE) for y in range(1, 5*ITERACJE)]
150unique_pairs4 = random.sample(pairs4, 5 * ITERACJE)
151for i in range(5 * ITERACJE):
152 id_firm, i_konf = unique_pairs4[i]
153 data_um = r.randint(1104537600, 1510398547) # unixtime od 2005-01-01 do 2017-11-11
154 instrukcje.append({
155 'tabela': 'Organizowanie',
156 'atrybuty': ['IdFirmy', 'IdKonferencji', 'DataUmowy'],
157 'wartosci': [
158 str(id_firm),
159 str(i_konf),
160 jako_unixtime(data_um)
161 ],
162 })
163
164for i in range(8 * ITERACJE):
165 instrukcje.append({
166 'tabela': 'Firmy',
167 'atrybuty': ['Nazwa', 'Adres', 'Miasto', 'Nip'],
168 'wartosci': [
169 jako_string(''.join(r.choice(ALFABET, r.randint(3, 29))).capitalize()),
170 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
171 jako_string(r.choice(MIASTA)),
172 jako_string(''.join([str(r.randint(0, 9)) for j in range(10)]) if (r.random() >= 0.3) else 'NULL')
173 ],
174 })
175
176for i in range(10 * ITERACJE):
177 instrukcje.append({
178 'tabela': 'Sprzety',
179 'atrybuty': ['TypSprzetu', 'Producent', 'IdSali'],
180 'wartosci': [
181 jako_string(r.choice(TYPY_SPRZETU)),
182 jako_string(r.choice(PRODUCENCI_SPRZETU)),
183 str(r.randint(6 * ITERACJE))
184 ],
185 })
186
187for i in range(1 * ITERACJE):
188 instrukcje.append({
189 'tabela': 'KierownicyBudynkow',
190 'atrybuty': ['Nazwisko', 'Imie', 'Pesel', 'Adres', 'Email', 'NrTelefonu'],
191 'wartosci': [
192 jako_string(names.get_last_name()),
193 jako_string(names.get_first_name(gender=r.choice(['male', 'female']))),
194 jako_string(''.join([str(r.randint(0, 9)) for j in range(11)])),
195 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
196 jako_string(''.join(r.choice(ALFABET, r.randint(4, 10))) + "@" + r.choice(DOMENY_EMAIL)),
197 jako_string(r.randint(100000000, 999999999))
198 ],
199 })
200
201for i in range(15 * ITERACJE):
202 instrukcje.append({
203 'tabela': 'PracownicyTech',
204 'atrybuty': ['Nazwisko', 'Imie', 'Pesel', 'Adres', 'Email', 'NrTelefonu'],
205 'wartosci': [
206 jako_string(names.get_last_name()),
207 jako_string(names.get_first_name(gender=r.choice(['male', 'female']))),
208 jako_string(''.join([str(r.randint(0, 9)) for j in range(11)])),
209 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
210 jako_string(''.join(r.choice(ALFABET, r.randint(4, 10))) + "@" + r.choice(DOMENY_EMAIL)),
211 jako_string(r.randint(100000000, 999999999))
212 ],
213 })
214
215for i in range(100 * ITERACJE):
216 instrukcje.append({
217 'tabela': 'Uczestnicy',
218 'atrybuty': ['Nazwisko', 'Imie', 'Adres', 'Email', 'NrTelefonu'],
219 'wartosci': [
220 jako_string(names.get_last_name()),
221 jako_string(names.get_first_name(gender=r.choice(['male', 'female']))),
222 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
223 jako_string(''.join(r.choice(ALFABET, r.randint(4, 10))) + "@" + r.choice(DOMENY_EMAIL)),
224 jako_string(r.randint(100000000, 999999999))
225 ],
226 })
227
228for i in range(15 * ITERACJE):
229 instrukcje.append({
230 'tabela': 'Prowadzacy',
231 'atrybuty': ['Nazwisko', 'Imie', 'Adres', 'Email', 'NrTelefonu', 'IdFirmy'],
232 'wartosci': [
233 jako_string(names.get_last_name()),
234 jako_string(names.get_first_name(gender=r.choice(['male', 'female']))),
235 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
236 jako_string(''.join(r.choice(ALFABET, r.randint(4, 10))) + "@" + r.choice(DOMENY_EMAIL)),
237 jako_string(r.randint(100000000, 999999999)),
238 str(r.randint(1, 8 * ITERACJE))
239 ],
240 })
241
242for i in range(1 * ITERACJE):
243 instrukcje.append({
244 'tabela': 'Budynki',
245 'atrybuty': ['Adres', 'IdKierownikaBudynku'],
246 'wartosci': [
247 jako_string(r.choice(ULICE) + " " + str(r.randint(1, 150)) + ", " + r.choice(MIASTA)),
248 str(r.randint(1 * ITERACJE))
249 ],
250 })
251
252for i in range(6 * ITERACJE):
253 instrukcje.append({
254 'tabela': 'Sale',
255 'atrybuty': ['NrSali', 'IloscMiejsc', 'IdBudynku'],
256 'wartosci': [
257 jako_string(str(r.randint(1, 998)) + r.choice(ALFABET)),
258 str(r.randint(30, 998)),
259 str(r.randint(1 * ITERACJE))
260 ],
261 })
262
263pairs = [(x, y) for x in range(6*ITERACJE) for y in range(1, 15*ITERACJE + 1)]
264unique_pairs = random.sample(pairs, 12 * ITERACJE)
265
266
267for i in range(12 * ITERACJE):
268 id_s, id_p = unique_pairs[i]
269 instrukcje.append({
270 'tabela': 'Obsluga',
271 'atrybuty': ['IdSali', 'IdPracownikaTech'],
272 'wartosci': [
273 str(id_s),
274 str(id_p)
275 ],
276 })
277
278pairs2 = [(x, y) for x in range(1, 18*ITERACJE) for y in range(1, 15*ITERACJE + 1)]
279unique_pairs2 = random.sample(pairs, 24 * ITERACJE)
280for i in range(24 * ITERACJE):
281 id_wyk, id_prow = unique_pairs2[i]
282 instrukcje.append({
283 'tabela': 'Prowadzenie',
284 'atrybuty': ['IdWykladu', 'IdProwadzacego'],
285 'wartosci': [
286 str(max(1,id_wyk)),
287 str(max(1,id_prow))
288 ],
289 })
290
291pairs3 = [(x, y) for x in range(18*ITERACJE) for y in range(1, 100*ITERACJE + 1)]
292unique_pairs3 = random.sample(pairs, 50 * ITERACJE)
293for i in range(50 * ITERACJE):
294 id_wyk, id_u = unique_pairs3[i]
295 instrukcje.append({
296 'tabela': 'OddaneGlosy',
297 'atrybuty': ['IdWykladu', 'IdUczestnika', 'Ocena'],
298 'wartosci': [
299 str(id_wyk),
300 str(id_u),
301 str(r.randint(1, 11))
302 ],
303 })
304
305for i in range(50 * ITERACJE):
306 instrukcje.append({
307 'tabela': 'ArtykulyNaukowe',
308 'atrybuty': ['Tytul', 'Autor', 'Url', 'IdWykladu'],
309 'wartosci': [
310 jako_string(''.join(r.choice(ALFABET, r.randint(3, 29))).capitalize()),
311 jako_string(''.join(r.choice(ALFABET, r.randint(3, 25))).capitalize() + ' ' + ''.join(
312 r.choice(ALFABET, r.randint(3, 25))).capitalize()),
313 jako_string(''.join(r.choice(ALFABET, r.randint(3, 29)))),
314 str(r.randint(18 * ITERACJE))
315 ],
316 })
317
318# Generowanie SQL
319print('/* Liczba rekordów: ' + str(len(instrukcje)) + ' */')
320i = 0
321# db = MySQLdb.connect(host="localhost", user="root", passwd="root", db="mydb")
322# cur = db.cursor()
323f_script = ""
324for ins in instrukcje:
325 script = 'INSERT INTO ' + ins['tabela'] + ' ('
326 script += ', '.join(ins['atrybuty']) + ') VALUES ('
327 script += ', '.join(ins['wartosci']) + ');\n'
328 print(script)
329 f_script += script + "\n"
330# cur.execute(script)
331# db.close()
332
333text_file = open("Output.txt", "w")
334text_file.write(f_script)
335text_file.close()