Tabelle Genauigkeiten und Import für Strecken und Richtungen fertig
This commit is contained in:
99
Datenbank.py
99
Datenbank.py
@@ -1,6 +1,9 @@
|
||||
import os
|
||||
import sqlite3
|
||||
import sympy as sp
|
||||
from Berechnungen import Einheitenumrechnung
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
|
||||
class Datenbank_anlegen:
|
||||
@@ -34,7 +37,10 @@ class Datenbank_anlegen:
|
||||
tachymeter_zenitwinkel NUMERIC(8, 6),
|
||||
tachymeter_distanz NUMERIC(8, 4),
|
||||
dateiname TEXT(200),
|
||||
CONSTRAINT pk_Beobachtunen PRIMARY KEY (beobachtungenID)
|
||||
CONSTRAINT pk_Beobachtungen PRIMARY KEY (beobachtungenID),
|
||||
CONSTRAINT fk_Beobachtungen_Netzpunktesp FOREIGN KEY (punktnummer_sp) REFERENCES Netzpunkte(punktnummer),
|
||||
CONSTRAINT fk_Beobachtungen_Netzpunktezp FOREIGN KEY (punktnummer_zp) REFERENCES Netzpunkte(punktnummer),
|
||||
CONSTRAINT fk_Beobachtungen_Instrumente FOREIGN KEY (instrumenteID) REFERENCES Instrumente(instrumenteID)
|
||||
);
|
||||
""");
|
||||
cursor.executescript("""CREATE TABLE Instrumente(
|
||||
@@ -44,6 +50,16 @@ class Datenbank_anlegen:
|
||||
CONSTRAINT pk_Instrumente PRIMARY KEY (instrumenteID)
|
||||
);
|
||||
""")
|
||||
cursor.executescript("""CREATE TABLE Genauigkeiten(
|
||||
genauigkeitenID INTEGER,
|
||||
instrumenteID INTEGER,
|
||||
beobachtungsart TEXT(25),
|
||||
stabw_apriori_konstant NUMERIC(3, 8),
|
||||
stabw_apriori_streckenprop NUMERIC(3, 8),
|
||||
CONSTRAINT pk_Genauigkeiten PRIMARY KEY (genauigkeitenID),
|
||||
CONSTRAINT fk_Genauigkeiten_Instrumente FOREIGN KEY (instrumenteID) REFERENCES Instrumente(instrumenteID)
|
||||
);
|
||||
""")
|
||||
con.commit()
|
||||
cursor.close()
|
||||
con.close()
|
||||
@@ -114,6 +130,87 @@ class Datenbankzugriff:
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def set_genauigkeiten(self, instrumenteID, beobachtungsart, stabw_apriori_konstant =None, stabw_apriori_streckenprop =None):
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
instrumentenname = cursor.execute("SELECT name FROM Instrumente WHERE instrumenteID = ?",
|
||||
(instrumenteID, )).fetchone()
|
||||
if instrumentenname is None:
|
||||
print(
|
||||
f"Die InstumentenID {instrumenteID} ist in der Datenbank nicht vorhanden. Bitte zuerst das Instrument hinzufügen.")
|
||||
cursor.close()
|
||||
con.close()
|
||||
return
|
||||
instrumentenname = instrumentenname[0]
|
||||
|
||||
if stabw_apriori_konstant is None and stabw_apriori_streckenprop is None:
|
||||
print(
|
||||
"Es wurden keine Genauigkeiten importiert. Bitte stabw_apriori_konstant und / oder stabw_apriori_streckenprop angeben.")
|
||||
cursor.close()
|
||||
con.close()
|
||||
return
|
||||
|
||||
if beobachtungsart == "Tachymeter_Richtung":
|
||||
stabw_apriori_konstant = Einheitenumrechnung.mgon_to_rad_Decimal(stabw_apriori_konstant)
|
||||
|
||||
if beobachtungsart == "Tachymeter_Strecke":
|
||||
stabw_apriori_konstant = Einheitenumrechnung.mm_to_m(stabw_apriori_konstant)
|
||||
|
||||
if isinstance(stabw_apriori_konstant, Decimal):
|
||||
stabw_apriori_konstant = float(stabw_apriori_konstant)
|
||||
|
||||
if isinstance(stabw_apriori_streckenprop, Decimal):
|
||||
stabw_apriori_streckenprop = float(stabw_apriori_streckenprop)
|
||||
|
||||
sql = "SELECT 1 FROM Genauigkeiten WHERE instrumenteID = ? AND beobachtungsart = ?"
|
||||
params = [instrumenteID, beobachtungsart]
|
||||
|
||||
if stabw_apriori_konstant is None:
|
||||
sql += " AND stabw_apriori_konstant IS NULL"
|
||||
else:
|
||||
sql += " AND stabw_apriori_konstant = ?"
|
||||
params.append(stabw_apriori_konstant)
|
||||
|
||||
if stabw_apriori_streckenprop is None:
|
||||
sql += " AND stabw_apriori_streckenprop IS NULL"
|
||||
else:
|
||||
sql += " AND stabw_apriori_streckenprop = ?"
|
||||
params.append(stabw_apriori_streckenprop)
|
||||
|
||||
liste_genauigkeiten = cursor.execute(sql, tuple(params)).fetchall()
|
||||
|
||||
if liste_genauigkeiten == []:
|
||||
if stabw_apriori_konstant is not None and stabw_apriori_streckenprop is not None:
|
||||
cursor.execute(
|
||||
"INSERT INTO Genauigkeiten (instrumenteID, beobachtungsart, stabw_apriori_konstant, stabw_apriori_streckenprop) VALUES (?, ?, ?, ?)",
|
||||
(instrumenteID, beobachtungsart, stabw_apriori_konstant, stabw_apriori_streckenprop)
|
||||
)
|
||||
print(
|
||||
f"Die Genauigkeitsangabe für die Beobachtungsart {beobachtungsart} des Instrumentes {instrumentenname} wurde erfolgreich hinzugefügt.")
|
||||
|
||||
elif stabw_apriori_konstant is None and stabw_apriori_streckenprop is not None:
|
||||
cursor.execute(
|
||||
"INSERT INTO Genauigkeiten (instrumenteID, beobachtungsart, stabw_apriori_streckenprop) VALUES (?, ?, ?)",
|
||||
(instrumenteID, beobachtungsart, stabw_apriori_streckenprop)
|
||||
)
|
||||
print(
|
||||
f"Die Genauigkeitsangabe für die Beobachtungsart {beobachtungsart} des Instrumentes {instrumentenname} wurde erfolgreich hinzugefügt.")
|
||||
|
||||
elif stabw_apriori_streckenprop is None and stabw_apriori_konstant is not None:
|
||||
cursor.execute(
|
||||
"INSERT INTO Genauigkeiten (instrumenteID, beobachtungsart, stabw_apriori_konstant) VALUES (?, ?, ?)",
|
||||
(instrumenteID, beobachtungsart, stabw_apriori_konstant)
|
||||
)
|
||||
print(
|
||||
f"Die Genauigkeitsangabe für die Beobachtungsart {beobachtungsart} des Instrumentes {instrumentenname} wurde erfolgreich hinzugefügt.")
|
||||
else:
|
||||
print("Die Genauigkeitsangabe ist bereits in der Datenbank vorhanden.")
|
||||
|
||||
con.commit()
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def get_instrument(self, typ):
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
Reference in New Issue
Block a user