Seite 1 von 1

Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 18:56
von rookie_23
Hallo allerseits,

ich habe folgendes Problem bei dem mir der ein oder andere hier hoffentlich helfen könnte (ich bin noch ein blutiger Anfänger was Python und sqlite angeht :D)

Ich habe eine sqlite-DB mit einem Wörterbuch als Inhalt, die Tabelle hat drei Spalten (id, normal, leicht). Nun möchte ich eine Anfrage erstellen, in welcher nach einem Input-Wert gesucht und falls vorhanden der passende Wert ausgegeben wird und falls nicht vorhanden ein Text ausgegeben wird. Um das ganze besser verständlich zu machen ein kleines Beispiel:

id normal leicht
1 Wolkenkratzer Gebäude

Wenn als Input der Wert Wolkenkratzer eingegeben wird, soll Gebäude ausgegeben werden. Würde Wolkenkratzer in der Tabelle nicht vorkommen, dann würde der Text " Das gewünschte Wort existiert nicht." erscheinen.

Bisher habe ich folgenden Code :

Code: Alles auswählen

import sqlite3
connection = sqlite3.connect("texttechnolgie.db")





def find_me(texttechnologie, normal):
    db = sqlite3.connect(texttechnologie.db)
    cursor = db.cursor()
    word =input("Bitte ein Wort eingeben: ")
    query = "SELECT * FROM basic_german_dict WHERE word=? ORDER BY {0}".format(easy)
    cursor.execute(query, (normal,))
    for row in cursor:
       print (row)
    else print("Das gewünschte Wort existiert nicht");

Ich sagte ja blutiger Anfänger...Gruß,
rookie_23

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 19:09
von Sirius3
Und was ist nun Dein Problem? Was passiert? Was stimmt an dem Ergebnis nicht? Was möchtest Du statt dessen?

`connection` wird nicht benutzt und sollte auf Modulebene auch gar nicht existieren. Was ist `texttechnologie` für eine Objekt, dass es das Attribut `db` hat? Möchtest Du hier eigentlich einen String benutzen?
`easy` ist nicht definiert. Man sollte auch nicht einfach etwas in SQL-Statements hineinformatieren.
Du schreibst von einer Spalte `normal` benutzt aber `word`?
Bei `else` muß auch der Block mit einem ':' eingeleitet werden. Der `else`-Block einer for-Schleife wird immer durchlaufen, wenn das for nicht per `break` verlassen wird, er ist also hier verwirrend.

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 19:51
von rookie_23
Das Problem ist, dass leider nichts passiert und nicht wie gewünscht die Datenbank nach dem Input-Wert durchsucht wird. "texttechnologie" ist meine Datenbank, die mit Hilfe dieser Funktion durchsucht werden sollte. Scheinbar ist mein Code doch ziemlich fehlerhaft. Word sollte eigentlich den Input-Wert darstellen, der in einer "normal"-Spalte vorkommen kann. Falls der Wert vorkommt und gefunden wird, sollte der dazugehörige "easy"-Wert ausgegeben werden, falls nicht, dass println() bei else.

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 20:12
von __deets__
Du musst find_me auch aufrufen. Wo tust du das?

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 20:34
von rookie_23
In der Shell, wenn ich meine die zwei Attribute (DB-Name und Spalte) eingebe, erscheint die Fehlermeldung "invalid syntax" :/

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 20:38
von __deets__
Mir ist nicht klar, was du da wie wo eingibst. Speicher dein Programm, und führ es aus. Zeig den Code, und dazugehörige Fehlermeldung ALS GANZES, nicht irgendwelche Umschreibungen.

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 20:41
von Sirius3
dass es einen Syntaxfehler gibt, habe ich Dir schon geschrieben und auch, was zu ändern ist.

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 20:45
von rookie_23
Der Code:

Code: Alles auswählen

import sqlite3
connection = sqlite3.connect("texttechnolgie.db")





def find_me(db, normal):
    db = sqlite3.connect(texttechnologie.db)
    cursor = db.cursor()
    word =input("Bitte ein Wort eingeben: ")
    query = "SELECT * FROM basic_german_dict WHERE word=? ORDER BY {0}".format(easy)
    cursor.execute(query, (normal,))
    for row in cursor:
       print (row)
    else print("Das gewünschte Wort existiert nicht");

Was ich in der Shell eingebe:

Code: Alles auswählen

def_find_me(textechnologie, normal)

Fehlermeldung:

Invalid Synatax (mit Verweis auf die Attribute)

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Sonntag 25. November 2018, 20:48
von __deets__
Ich habe um die vollständige Fehlermeldung gebeten. Nicht irgendwelche Umschreibung mit Hinweisen auf Hinweise auf die hingewiesen wurde.

Und was soll denn def_find_me sein?

Re: Sqlite-DB nach Input durchsuchen und passenden Wert ausgeben

Verfasst: Montag 26. November 2018, 17:34
von noisefloor
Hallo,

du hast keine Funktion `def_find_me`, darum bekommst du einen Fehler. Deine Funktion heißt `find_me`...

Kann es vielleicht sein, dass dir akut noch ein paar Python-Grundlagen fehlen und die vielleicht nochmal das Python-Tutorial durcharbeiten möchtest?

Gruß, noisefloor