Hilfe bei Suchfunktion

Django, Flask, Bottle, WSGI, CGI…
Antworten
proarter
User
Beiträge: 2
Registriert: Donnerstag 11. Juni 2015, 10:28

Hallo!

ich bin ein ziemlicher Anfänger in sachen programmieren und bräuchte Hilfe bei der Erstellung meiner Suchfunktion.

Code: Alles auswählen

@app.route('/suche',methods=["GET", "POST"])
def suche():
    kategorien = genre()
    if request.method =="GET":
        suche = request.form["suche"]
        con = open_con()
        cur = con.cursor()
        query = ('SELECT bild_id, bild_name, vorschaupfad, kategorie FROM bilder \
                  WHERE bild_name = "%s"' % suche )
        cur.execute(query)
        wallpapers = [dict(bild_id = raw[0], bild_name=raw[1], vorschaupfad=raw[2], kategorie = raw[3]) for raw in cur]
        cur.close()
        con.close()

        return render_template('main.html', kategorien = kategorien, title = "Home", wallpapers = wallpapers)
das ist der code zu meiner Suchfunktion. Allerdings wenn ich dann bei der Suche was eingebe steht zwar oben in der URL der suchbegriff allerdings passiert sonst nichts :?
könnte mir einer weiterhelfen? wäre sehr dankbar :roll:
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
proarter
User
Beiträge: 2
Registriert: Donnerstag 11. Juni 2015, 10:28

hey vielen dank für deine antwort, allerdings kann ich mit den links gerade nicht so viel anfangen ? :K
BlackJack

@proarter: Du formatierst Benutzeringaben als Zeichenkette in eine SQL-Zeichenkette. Das darf man niemals machen! Das ist gefährlich weil der Benutzer damit SQL-Code ausführen kann den *er* eingibt, zum Beispiel um an Informationen zu kommen die nicht für ihn gedacht sind, oder zum Beispiel auch einfach mal alle Tabellen zu löschen.

Ausschreiben und richtig schreiben von Namen wäre auch nett. Also `connection`, `cursor`, und `row` statt `raw`. :-)

Und was heisst „es passiert sonst nichts“? Was sagt das Fehlerprotokoll vom Webserver? Gibst Du auch einen tatsächlich existierenden Bildnamen ein? Hat das Template auch keine Endlosschleife? Sind sonstige Fehler im Template?
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@proarter: du holst das Ergebnis des SQL-Queries auch nirgendwo ab. Sprich: da fehlt noch ein `fetchall()`.

Gruß, noisefloor
BlackJack

@noisefloor: Das kommt auf das DB-Modul an. Bei den meisten kann man auch einfach über den Cusor iterieren, insbesondere weil dann im Gegensatz zu `fetchall()` nicht alle Datensätze auf einmal geholt/übertragen werden müssen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hat schon jemand auf ein ORM verwiesen?!? :twisted:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Noch nicht, aber das Problem wird das wohl auch nicht lösen.
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
BlackJack hat geschrieben:@noisefloor: Das kommt auf das DB-Modul an. Bei den meisten kann man auch einfach über den Cusor iterieren
Ah, ok. War mir so nicht bekannt. Liegt wohl daran, dass alle Beispiele, die ich bisher gesehen habe, im ein `fetch...` verwenden.

Gruß, noisefloor
Antworten