sql >> Databáze >  >> RDS >> Mysql

mysqldb python escaping? nebo %s?

Abych byl konkrétnější... cursor.execute() metoda přebírá volitelný argument, který obsahuje hodnoty, které mají být citovány a interpolovány do šablony/příkazu SQL. To se NEDĚLÁ pomocí jednoduchého % operátor! cursor.execute(some_sql, some_params) je NE stejné jako cursor.execute(some_sql % some_params)

Python DB-API určuje, že jakýkoli vyhovující ovladač/modul musí poskytovat .paramstyle atributem, který může být libovolný z 'qmark', 'numeric', 'named', 'format' nebo 'pyformat' ... takže teoreticky lze pomocí introspekce a malé žvaní. To by mělo být stále bezpečnější, než se pokoušet sami citovat a interpolovat hodnoty do vašich řetězců SQL.

Obzvláště mě pobavilo čtení Varování Nikdy, nikdy, NIKDY nepoužívejte Python řetězec ... interpolace ... Dokonce ani namířenou zbraní. v dokumentech PsycoPG.



  1. Jak vytvořím oddíl pro každý měsíc aktuálního roku

  2. Jak zjistit oprávnění a role udělené uživateli v Oracle?

  3. PG::ConnectionBad:fe_sendauth:nebylo zadáno heslo

  4. Dynamicky načítat informace do Twitter Bootstrap modal