SQLite3 übenimmt Daten nicht

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
V-RoM
User
Beiträge: 3
Registriert: Mittwoch 29. November 2017, 15:44

Samstag 6. Januar 2018, 11:54

Hallo Zusammen!

Ich möchte die Daten aus meiner SQLite3 Datenbank sortiert auslesen und stecke bei folgendem Problem fest:

Wenn ich das Kriterium direkt angebe, dann klappt alles:

Code: Alles auswählen

cursor.execute("SELECT * FROM Mitglieder ORDER BY Nachname;")
Wenn ich einen Platzhalter verwende nicht:

Code: Alles auswählen

arg = "Nachname"
cursor.execute("SELECT * FROM Mitglieder ORDER BY ?;",[arg])
Allerdings kommt auch keine Fehlermeldung von SQLite...
Was mache ich falsch?
__deets__
User
Beiträge: 3087
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 6. Januar 2018, 12:25

So geht das nicht. Platzhalter können nur für Werte verwendet werden, nicht für SQL Bezeichner. Da musst du leider mit String formatting arbeiten.
V-RoM
User
Beiträge: 3
Registriert: Mittwoch 29. November 2017, 15:44

Samstag 6. Januar 2018, 12:42

Vielen Dank!
narpfel
User
Beiträge: 213
Registriert: Freitag 20. Oktober 2017, 16:10

Samstag 6. Januar 2018, 13:10

@V-RoM: Wenn du dir mit Stringformatierung SQL-Kommandos zusammenbastelst, solltest du dir immer des Risikos einer SQL-Injection bewusst sein.
V-RoM
User
Beiträge: 3
Registriert: Mittwoch 29. November 2017, 15:44

Samstag 6. Januar 2018, 14:25

Danke für Hinweis!
Ich werde mich mal damit beschäftigen :!:
Benutzeravatar
noisefloor
User
Beiträge: 2422
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Samstag 6. Januar 2018, 19:11

Hallo,

oder du benutzt ein ORM wie SQLAlchemy, dann kannst du eine Variable `order_by` Funktion übergeben. Wobei nur deswegen ein ORM benutzen ist vielleicht ein bisschen übertrieben ;-)

Gruß, noisefloor
Antworten