Printanweisung mit variabler Länge erzeugen
@jerch: Naja beim `execute()` ist Effizienz ein netter Bonus zur effektiven Verhinderung von SQL-Injection, und bei `executemany()` wäre es alleine für sich schon ein Grund da für `n` Datensätze nicht `n` verschiedene SQL-Anweisungen an das DBMS zu füttern. Oder habe ich die Frage missverstanden?
@Papp Nase: es gibt 101 Gründe, warum das Übergeben von Werten in SQL-Statements mit Stringformatierung schlecht und mit Platzhaltern gut ist. Warum ist es gut, einen Sicherheitsgurt im Auto anzulegen oder statt aus dem 5. Stock zu springen, die Treppe zu nehmen?
1. Lesbarer: Befehl und Werte sind getrennt
2. Schneller: Werte werden direkt übergeben und müssen nicht erst geparst werden
3. Einfacher: man muß sich nicht selbst um das Escapen von Sonderzeichen bemühen
4. weniger Fehleranfälliger, weil weniger Komplex
5. Sicherer: es können nicht absichtlich oder unabsichtlich andere SQL-Befehle ausgeführt werden.
Punkt 5 ist nur ein netter Nebeneffekt, der in den meisten Fällen gar keine Rolle spielt. Die Punkt davor sollten Grund genug sein, sich zu merken, wie man Parameter übergibt, zumal es absolut keine Nachteile gibt.
1. Lesbarer: Befehl und Werte sind getrennt
2. Schneller: Werte werden direkt übergeben und müssen nicht erst geparst werden
3. Einfacher: man muß sich nicht selbst um das Escapen von Sonderzeichen bemühen
4. weniger Fehleranfälliger, weil weniger Komplex
5. Sicherer: es können nicht absichtlich oder unabsichtlich andere SQL-Befehle ausgeführt werden.
Punkt 5 ist nur ein netter Nebeneffekt, der in den meisten Fällen gar keine Rolle spielt. Die Punkt davor sollten Grund genug sein, sich zu merken, wie man Parameter übergibt, zumal es absolut keine Nachteile gibt.