SQLite3 übenimmt Daten nicht

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

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: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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

Vielen Dank!
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16: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

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

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