Sqlite abfrage ! ich komm nicht weiter !

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
Manchotix
User
Beiträge: 54
Registriert: Samstag 14. Januar 2012, 19:54

Hallo zusammen,

ich habe folgendes Problem und zwar will ich gerne result eine Abfrage stellen ob der string articlename in der Tuple vorhanden ist, um eine eindeutige zuweisung von url zu db eintrag zuerhalten.
Ich weiß zwar nicht ob das so gut ist wie ich es mache oder ob es eine sehr viel besser lösung gibt(die gibt es ganz sicher!) ist auch das erste mal das ich mich mit datebanken arbeite.
Wenn das mehr als falsch ist was ich da mache, dann bitte sagen.
Ich hoffe das mit jemand helfen kann und ich das Problem gut genug erklärt habe.

Code: Alles auswählen

@route("/<articlename>")
@view("singlearticle")
def single_post(articlename):
    dbcon = sqlite3.connect("./blog.db")
    con = dbcon.cursor()
    con.execute("SELECT headline, text FROM blog WHERE headline=:aname", {"aname": articlename})
    result = con.fetchall()
    con.close()
    if articlename not in result:
        return "error 404"
    else:
        return dict(rows=result)
Verwende Python 2.7 und bottle 0.11
- Über Fehler sollte man sich freuen als über das richtige Ergebnis denn wir Menschen können nur aus den Fehlern lernen-
Benutzeravatar
Manchotix
User
Beiträge: 54
Registriert: Samstag 14. Januar 2012, 19:54

Ok habe das Problem gelöst in dem ich einfach die result tuple in eine liste umgewandelt habe.
Ich weiß zwar nicht ob das jetzt so gut ist aber es löst fürs erste mein Problem für andere vorschläge oder verbesserungen bin ich offen.

Code: Alles auswählen

con.execute("SELECT headline, inhalt FROM blog WHERE headline=:aname", {"aname": articlename})
aresult = [result[0] for result in con.fetchall()]
con.close()
if articlename not in aresult:
    return "error 404"
else:
    return dict(rows=result)
- Über Fehler sollte man sich freuen als über das richtige Ergebnis denn wir Menschen können nur aus den Fehlern lernen-
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo Manchotix,

warum versuchst Du Probleme zu lösen, die nicht existieren?
Dein SQL-Select filtert alle blog-Einträge, bei denen »headline=articlename« ist.
Wenn die Spalte von »headline« unique ist, sollte das genau keinen oder einen Eintrag liefern.
Ein »if not result« reicht dann völlig aus.
Benutzeravatar
Manchotix
User
Beiträge: 54
Registriert: Samstag 14. Januar 2012, 19:54

Wenn die Spalte von »headline« unique ist, sollte das genau keinen oder einen Eintrag liefern.
Ein »if not result« reicht dann völlig aus.
Ok dank dir schonmal, reicht auch völlig aus :)

Aber sonst ist alles so weit richtig oder ist noch irgend wo ein grober schnittzer drin ?
Und tut mir leid, dass ich für sowas ein Thread aufmache war gestern schon spät :/.
- Über Fehler sollte man sich freuen als über das richtige Ergebnis denn wir Menschen können nur aus den Fehlern lernen-
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Manchotix hat geschrieben:Und tut mir leid, dass ich für sowas ein Thread aufmache war gestern schon spät :/.
Die Frage ist ja in Ordnung, sie ist nur an der falschen Stelle. Es gibt hier auch ein Unterforum für Fragen rund um Datenbanken.

Edit: Jetzt hat sie ja ein Moderator passend verschoben
Antworten