sql >> Databasteknik >  >> RDS >> Mysql

mysqldb python flyr? eller %s?

För att vara mer specifik ... cursor.execute() Metoden tar ett valfritt argument som innehåller värden som ska citeras och interpoleras i SQL-mallen/satsen. Detta görs INTE med en enkel % operatör! cursor.execute(some_sql, some_params) är INTE samma som cursor.execute(some_sql % some_params)

Python DB-API anger att alla kompatibla drivrutiner/moduler måste tillhandahålla en .paramstyle attribut som kan vara någon av 'qmark', 'numeric', 'named', 'format' eller 'pyformat' ... så att man i teorin skulle kunna anpassa dina SQL-frågesträngar till den form som stöds genom introspektion och en lite mumsande. Detta borde fortfarande vara säkrare än att själv försöka citera och interpolera värden i dina SQL-strängar.

Jag var särskilt road av att läsa Varning Använd aldrig, aldrig, ALDRIG Python sträng ... interpolation ... Inte ens under pistolhot. i PsycoPG-dokumenten.



  1. Hur dödar jag alla processer i Mysql show processlist?

  2. Bearbetning av MySQL resulterar i bash

  3. Hur man lägger till NOT NULL-begränsning i MySQL

  4. Mysql returnerar mer än en rad