Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysqldb python entkommt? oder %s?

Genauer gesagt ... die cursor.execute() Die Methode akzeptiert ein optionales Argument, das Werte enthält, die in die SQL-Vorlage/Anweisung eingefügt und in Anführungszeichen gesetzt werden sollen. Dies geschieht NICHT mit einem einfachen % Operator! cursor.execute(some_sql, some_params) ist NICHT dasselbe wie cursor.execute(some_sql % some_params)

Die Python DB-API gibt an, dass jeder konforme Treiber/Modul einen .paramstyle bereitstellen muss Attribut, das eines von 'qmark', 'numeric', 'named', 'format' oder 'pyformat' sein kann ... so dass man theoretisch Ihre SQL-Abfragezeichenfolgen durch Introspektion an die unterstützte Form anpassen könnte und a wenig munging. Dies sollte immer noch sicherer sein, als zu versuchen, selbst Werte in Ihre SQL-Strings zu zitieren und zu interpolieren.

Ich war besonders amüsiert zu lesen Warnung Verwenden Sie niemals, niemals, NIEMALS Python Zeichenfolge ... Interpolation ... Nicht einmal mit vorgehaltener Waffe. in der PsycoPG-Dokumentation.