DB-API: String-Operation statt Parametrisierte SQL-Queries

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 27. November 2007, 08:32

Sagt mal, warum fällt eigentlich jeder darauf rein, bei der DB-Api, statt der richtigen Parameter Übergabe eine String-Operation zu machen? Weil es als Platzhalter auch ein %s sein kann? Gibt es eine Einsteiger-Dokumentation, die es falsch vormacht?

Vielleicht sollte man mal eine Liste machen, mit den Dingen die Einseiger öfters falsch machen. Das könnte dann eine Grundlage sein, Python in der Richtung zu ändern...

In dem Falle könnte man vielleicht den "%s"-Format und pyformat Platzhalter in der DB-Api streichen und nur noch qmark ("?") und named (":name") erlauben.

btw. warum gibt es überhaupt diese vier Formate?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Dienstag 27. November 2007, 08:42

SQL sieht '?' und ':name' vor. '%s' und '%(name)s' ist recht naheliegend wenn man eine Python implementierung schreibt, weil man dann keinen eigenen "Parser" schreiben muss, sondern die "escape"ten Parameter einfach per ``%`` in die Zeichenkette bekommt.

Wahrscheinlich lief das mit der DB-API genau wie bei SQL ─ die Hersteller kochen alle ihr eigenes Süppchen und ab und zu wird ein Teil von allen in den Standard aufgenommen. ;-)
Antworten