Seite 1 von 1

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

Verfasst: Dienstag 27. November 2007, 08:32
von jens
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?

Verfasst: Dienstag 27. November 2007, 08:42
von BlackJack
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. ;-)