Python - Sqlite3 = Abgleich Datenbank und Eingabe
Verfasst: Samstag 30. Mai 2020, 15:47
Hallo,
ich versuche mich seit kurzem, mit Python in Verbindung mit einer Sqlite-Datenbank vertraut zu machen.
Als erstes Projekt habe ich mich für einen ganz einfachen Vokabeltrainer entschieden.
Ich bin mit meinen Fortschritten sehr zufrieden und habe auch immer wieder im Internet Lösungen für meine Probleme gefunden.
Aktuell komme ich aber mit googeln nicht weiter.
Die Sqlite-Datenbank ist erstellt und mit einigen Datensätzen gefüllte.
Die Aufnahme neuer Vokabeln in die Datenbank funktioniert schon. Jetzt versuche ich gerade die ersten Schritte im Zusammenhang mit der Vokabelabfrage.
Bevor ich im in späteren Schritten noch Schleifen zur mehrfachen Abfrage von Vokabeln einbauen möchte, wollte ich zuerst einmal die Abfrage einer vorgegebenen Vokabel testen. Hier z.B. die Vokabel mit der (laufenden) Nr. 430. Zusammen mit der späteren Schleife sollen die Vokabeln dann per Variable immer um einen Datensatz von hinten nach vorne abgefragt werden. Zum Beispiel zuerst Nr. 430 danach Nr. 429 etc. Wie dieses mit einer Schleife funktioniert, müsste ich hoffentlich hinbekommen. Die Einbindung der Variablen "aktuellenr" im Befehl "select" hinter "where" bekomme ich aber noch nicht hin. Vielleicht kann mir da jemand auch schon mal einen Tipp geben.
Zum Testen lasse ich mir die deutsche und die englische Vokabel anzeigen. Später wird die Anzeige der englischen Vokabel natürlich noch entfernt, da es ja sonst keinen Sinn macht. Es zeigt mir jedoch, dass ich die Vokabeln aus der Datenbank richtig geholt habe.
Ich stehe jetzt aber noch bei dem Problem, dass der Abgleich der englische Vokabel aus der Datenbank mit der Tastatureingabe nicht funktioniert. Mir wird immer das Ergebnis "Falsche Antwort" gegeben, auch wenn ich die Vokabel richtig eingebe. Ich vermute, dass die Variablen aus der Datenbank und der Input-Eingabe nicht das gleiche Format haben. Ich habe jedoch noch nicht herausgefunden, wie ich prüfen kann, welcher Typ bei der Variablen gespeichert ist.
Vielleicht kann mir ja jemand helfen:
1.) Wie prüfe ich den Typ einer Variablen, um zu sehen, ob die Typen zusammen passen?
2.) Wie kann ich hier ggf. die Typen so umwandeln, dass die If-Abfrage funktioniert?
3.) Wie kann ich bei der Select-Abfrage die Bedingung "where" mit einer Variablen eingrenzen?
Hier ist ein Auszug aus meiner bisherigen Programmierung:
import sqlite3
verbindung = sqlite3.connect("Vokabeln.db")
zeiger = verbindung.cursor()
inhaltdeutsch = zeiger.execute("select deutsch from Englischvokabeln where nr = 430")
vinhaltdeutsch = inhaltdeutsch.fetchone()
print(vinhaltdeutsch[0])
inhaltenglisch = zeiger.execute("select englisch from Englischvokabeln where nr = 430")
vinhaltenglisch = inhaltenglisch.fetchone()
print(vinhaltenglisch[0])
antwortenglisch = input("Wie lautet das englische Wort? ")
if inhaltenglisch == antwortenglisch:
print("Richtig!")
else:
print("Falsche Antwort!")
verbindung.commit()
verbindung.close()
ich versuche mich seit kurzem, mit Python in Verbindung mit einer Sqlite-Datenbank vertraut zu machen.
Als erstes Projekt habe ich mich für einen ganz einfachen Vokabeltrainer entschieden.
Ich bin mit meinen Fortschritten sehr zufrieden und habe auch immer wieder im Internet Lösungen für meine Probleme gefunden.
Aktuell komme ich aber mit googeln nicht weiter.
Die Sqlite-Datenbank ist erstellt und mit einigen Datensätzen gefüllte.
Die Aufnahme neuer Vokabeln in die Datenbank funktioniert schon. Jetzt versuche ich gerade die ersten Schritte im Zusammenhang mit der Vokabelabfrage.
Bevor ich im in späteren Schritten noch Schleifen zur mehrfachen Abfrage von Vokabeln einbauen möchte, wollte ich zuerst einmal die Abfrage einer vorgegebenen Vokabel testen. Hier z.B. die Vokabel mit der (laufenden) Nr. 430. Zusammen mit der späteren Schleife sollen die Vokabeln dann per Variable immer um einen Datensatz von hinten nach vorne abgefragt werden. Zum Beispiel zuerst Nr. 430 danach Nr. 429 etc. Wie dieses mit einer Schleife funktioniert, müsste ich hoffentlich hinbekommen. Die Einbindung der Variablen "aktuellenr" im Befehl "select" hinter "where" bekomme ich aber noch nicht hin. Vielleicht kann mir da jemand auch schon mal einen Tipp geben.
Zum Testen lasse ich mir die deutsche und die englische Vokabel anzeigen. Später wird die Anzeige der englischen Vokabel natürlich noch entfernt, da es ja sonst keinen Sinn macht. Es zeigt mir jedoch, dass ich die Vokabeln aus der Datenbank richtig geholt habe.
Ich stehe jetzt aber noch bei dem Problem, dass der Abgleich der englische Vokabel aus der Datenbank mit der Tastatureingabe nicht funktioniert. Mir wird immer das Ergebnis "Falsche Antwort" gegeben, auch wenn ich die Vokabel richtig eingebe. Ich vermute, dass die Variablen aus der Datenbank und der Input-Eingabe nicht das gleiche Format haben. Ich habe jedoch noch nicht herausgefunden, wie ich prüfen kann, welcher Typ bei der Variablen gespeichert ist.
Vielleicht kann mir ja jemand helfen:
1.) Wie prüfe ich den Typ einer Variablen, um zu sehen, ob die Typen zusammen passen?
2.) Wie kann ich hier ggf. die Typen so umwandeln, dass die If-Abfrage funktioniert?
3.) Wie kann ich bei der Select-Abfrage die Bedingung "where" mit einer Variablen eingrenzen?
Hier ist ein Auszug aus meiner bisherigen Programmierung:
import sqlite3
verbindung = sqlite3.connect("Vokabeln.db")
zeiger = verbindung.cursor()
inhaltdeutsch = zeiger.execute("select deutsch from Englischvokabeln where nr = 430")
vinhaltdeutsch = inhaltdeutsch.fetchone()
print(vinhaltdeutsch[0])
inhaltenglisch = zeiger.execute("select englisch from Englischvokabeln where nr = 430")
vinhaltenglisch = inhaltenglisch.fetchone()
print(vinhaltenglisch[0])
antwortenglisch = input("Wie lautet das englische Wort? ")
if inhaltenglisch == antwortenglisch:
print("Richtig!")
else:
print("Falsche Antwort!")
verbindung.commit()
verbindung.close()