sql >> Database >  >> RDS >> Mysql

mysqldb python ontsnapt? of %s?

Om specifieker te zijn ... de cursor.execute() methode neemt een optioneel argument dat waarden bevat die moeten worden aangehaald en geïnterpoleerd in de SQL-sjabloon/-instructie. Dit doe je NIET met een simpele % exploitant! cursor.execute(some_sql, some_params) is NIET hetzelfde als cursor.execute(some_sql % some_params)

De Python DB-API specificeert dat elke compatibele driver/module een .paramstyle . moet bieden attribuut dat elk van 'qmark', 'numeric', 'named', 'format' of 'pyformat' kan zijn ... zodat men, in theorie, uw SQL-querystrings zou kunnen aanpassen aan de ondersteunde vorm door middel van introspectie en een beetje munchen. Dit zou nog steeds veiliger moeten zijn dan zelf te proberen waarden in uw SQL-strings te citeren en te interpoleren.

Ik was vooral geamuseerd toen ik Waarschuwing Gebruik nooit, nooit, NOOIT Python string ... interpolatie ... Zelfs niet onder schot. in de PsycoPG-documenten.



  1. Kan ik in MySQL referentiële integriteitscontroles uitstellen tot commit?

  2. Werken met SQL-cursors

  3. MySQL-fout #2014 - Opdrachten lopen niet synchroon; je kunt deze opdracht nu niet uitvoeren

  4. Een cursor gebruiken in een opgeslagen procedure om rijen te herhalen MySQL