Mysql
 sql >> Database >  >> RDS >> Mysql

mysqldb python in fuga? o %s?

Per essere più precisi... il cursor.execute() accetta un argomento facoltativo che contiene valori da citare e interpolare nel modello/istruzione SQL. Questo NON viene fatto con un semplice % operatore! cursor.execute(some_sql, some_params) è NON lo stesso di cursor.execute(some_sql % some_params)

Python DB-API specifica che qualsiasi driver/modulo conforme deve fornire un .paramstyle attributo che può essere uno qualsiasi tra 'qmark', 'numeric', 'named', 'format' o 'pyformat'... in modo che si possa, in teoria, adattare le stringhe di query SQL al modulo supportato attraverso l'introspezione e un piccolo sgranocchiare. Questo dovrebbe essere comunque più sicuro che provare a citare e interpolare i valori nelle tue stringhe SQL da solo.

Mi ha particolarmente divertito leggere Attenzione Mai, mai, MAI usare Python stringa... interpolazione... Nemmeno sotto tiro. nei documenti di PsycoPG.