Last active 14 hours ago

Generuje zadaną ilość osób, zwierząt i relacji (bez dodatkowych zasad - zwierzę może mieć wiele właścicieli, osoba może mieć wiele zwierząt)

gen2.py Raw
1from faker import Faker
2import random
3import sqlite3
4import numpy as np
5
6faker = Faker(locale="pl")
7
8N_OSOB = 30
9N_ZWIERZAT = 50
10N_RELACJI = 20
11
12imiona_zwierzat = {
13 "pies": [
14 "Burek", "Reksio", "Azor", "Max", "Luna", "Bella",
15 "Rocky", "Tina", "Bruno", "Dżeki", "Milo", "Kora"
16 ],
17 "kot": [
18 "Mruczek", "Filemon", "Kicia", "Simba", "Mila", "Leo",
19 "Loki", "Nela", "Puszek", "Feliks", "Tosia", "Zorro"
20 ],
21 "papuga": [
22 "Kiwi", "Lola", "Rio", "Mango", "Coco", "Polly",
23 "Sky", "Bingo", "Tiki", "Ariel", "Paco", "Zazu"
24 ],
25 "chomik": [
26 "Puszek", "Nugat", "Tofik", "Karmel", "Fistaszek", "Drops",
27 "Migdał", "Bąbel", "Rufi", "Pixel", "Kokos", "Gizmo"
28 ],
29 "żółw": [
30 "Leonardo", "Skorupka", "Turbo", "Shelly", "Donatello",
31 "Rafaello", "Mirek", "Stefan", "Tuptuś", "Gucio"
32 ]
33}
34
35def gen_zwierze(id):
36 gatunek = random.choice(list(imiona_zwierzat.keys()))
37 imie = random.choice(imiona_zwierzat[gatunek])
38 wiek = random.randint(1, 10)
39 czy_zyje = int(np.random.choice([1, 0], p=[0.8, 0.2]))
40 return id, imie, wiek, gatunek, czy_zyje
41
42def gen_osobe(id):
43 imie, nazwisko = faker.unique.first_name(), faker.unique.last_name()
44 wiek = random.randint(1, 100)
45 plec = random.choice(['mężczyzna', 'kobieta'])
46 return id, imie, nazwisko, wiek, plec
47
48zwierzeta = [
49 gen_zwierze(i)
50 for i in range(N_ZWIERZAT)
51]
52osoby = [
53 gen_osobe(i)
54 for i in range(N_OSOB)
55]
56relacje = [
57 (random.choice(osoby)[0], random.choice(zwierzeta)[0])
58 for _ in range(N_RELACJI)
59]
60
61base = sqlite3.connect("zwierzeta.db")
62base.cursor().executescript('''
63CREATE TABLE IF NOT EXISTS osoby (id INTEGER PRIMARY KEY, imie TEXT, nazwisko TEXT, wiek INTEGER, plec TEXT);
64CREATE TABLE IF NOT EXISTS zwierzeta (id INTEGER PRIMARY KEY, imie TEXT, wiek INTEGER, gatunek TEXT, czy_zyje INTEGER);
65CREATE TABLE IF NOT EXISTS osoby_zwierzeta (id_osoby INTEGER, id_zwierzecia INTEGER);
66DELETE FROM osoby;
67DELETE FROM zwierzeta;
68DELETE FROM osoby_zwierzeta;
69''')
70base.commit()
71
72base.cursor().executemany("INSERT INTO osoby (id, imie, nazwisko, wiek, plec) VALUES (?, ?, ?, ?, ?)", osoby)
73base.cursor().executemany("INSERT INTO zwierzeta (id, imie, wiek, gatunek, czy_zyje) VALUES (?, ?, ?, ?, ?)", zwierzeta)
74base.cursor().executemany("INSERT INTO osoby_zwierzeta (id_osoby, id_zwierzecia) VALUES (?, ?)", relacje)
75base.commit()