Files
python_skripte/play_with_sqllite/main.py

122 lines
4.3 KiB
Python

#! /usr/bin/env python.3.11
import sqlite3, os
script_folder = os.path.dirname(os.path.realpath(__file__))
def erzeuge_tabellen():
with sqlite3.connect(script_folder + "/startegie.db") as verbindung:
cursor = verbindung.cursor()
cursor.execute("DROP TABLE IF EXISTS viren;")
cursor.execute("DROP TABLE IF EXISTS viren_typ;")
cursor.execute("DROP TABLE IF EXISTS vorfall;")
sql = '''
CREATE TABLE viren(
name TEXT PRIMARY KEY,
typ INTEGER,
status TEXT)
'''
cursor.execute(sql)
sql = '''
CREATE TABLE viren_typ(
typ INTEGER PRIMARY KEY,
groesse INT,
signatur TEXT)
'''
cursor.execute(sql)
sql = '''
CREATE TABLE vorfall(
name TEXT,
ort TEXT,
vorfall TEXT)
'''
cursor.execute(sql)
verbindung.commit()
def schreibe_tabellen():
with sqlite3.connect(script_folder + "/startegie.db") as verbindung:
cursor = verbindung.cursor()
sql = '''
INSERT INTO viren_typ(typ, groesse, signatur)
VALUES(1,128,'ABAABA'),(2,256,'ABAABA'),(3,256,'BCCBCB')
'''
cursor.execute(sql)
sql = '''
INSERT INTO viren(name, typ, status)
VALUES ('T800', 1, 'aktiv'),
('T803', 2, 'aktiv'),
('Bit13', 3, 'aktiv'),
('Gorf3', 1, 'aktiv'),
('Gorf7', 2, 'aktiv')
'''
cursor.execute(sql)
verbindung.commit()
def lese_tabellen():
with sqlite3.connect(script_folder + "/startegie.db") as verbindung:
cursor = verbindung.cursor()
sql = '''SELECT * FROM viren_typ;'''
cursor.execute(sql)
#for ergebnis in cursor:
# print(ergebnis)
return cursor.fetchall()
def eingabe():
with sqlite3.connect(script_folder + "/startegie.db") as verbindung:
cursor = verbindung.cursor()
while True:
name = input("Name des Virus: ")
if not name:
break
ort = input("Ort: ")
vorfall = input("Vorfall: ")
sql = """Select * from viren WHERE name = '{name}';""".format(name=name)
cursor.execute(sql)
if cursor.fetchone():
speicher_aktion(name, ort, vorfall)
else:
print("Virus unbekannt !")
print("Eingabevorgang wurde beendet.")
def speicher_aktion(bezeichnung, ort, vorfall ):
with sqlite3.connect(script_folder + "/startegie.db") as verbindung:
cursor = verbindung.cursor()
sql = """INSERT INTO vorfall(name, ort, vorfall)
VALUES ( '{bezeichnung}', '{ort}', '{vorfall}' );""".format(bezeichnung=bezeichnung, ort=ort,vorfall=vorfall)
cursor.execute(sql)
def ausgabe_abfrage(sql_abfrage):
with sqlite3.connect(script_folder + "/startegie.db") as daten:
try:
zeiger = daten.cursor()
zeiger.execute(sql_abfrage)
for datensatz in zeiger:
for wert in datensatz:
wert = str(wert)
print('| ', wert, " " * (9 - len(wert)), end="")
print("|")
except sqlite3.OperationalError:
print("Tabelle nicht gefunden!")
except:
print("Daten konnten nicht bearbeitet werden!")
if __name__ == "__main__":
#erzeuge_tabellen()
#schreibe_tabellen()
eingabe()
for i in lese_tabellen():
print(i)
ausgabe_abfrage(sql_abfrage="""SELECT vorfall.name, viren.typ, vorfall.ort, vorfall.vorfall
FROM vorfall JOIN viren ON viren.name = vorfall.name
WHERE vorfall = 'Störung';""")