sql >> Databasteknik >  >> RDS >> Mysql

Python:bästa praxis och säkraste sättet att ansluta till MySQL och utföra frågor

För att undvika injektioner, använd execute med %s i stället för varje variabel, skicka sedan värdet via en lista eller tupel som den andra parametern för execute . Här är ett exempel från dokumentationen :

c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
          WHERE price < %s""", (max_price,))

Observera att detta använder ett komma , inte % (vilket skulle vara ett direkt strängbyte, inte escaped). Gör inte detta :

c.execute("""SELECT spam, eggs, sausage FROM breakfast
          WHERE price < %s""" % (max_price,))

Dessutom får du inte använda enstaka citattecken runt positionsinnehavaren ('%s'). ) om parametern är en sträng eftersom drivrutinen tillhandahåller dessa.



  1. Avmystifierar CXPACKET- och CXCONSUMER-vänttyper i SQL Server

  2. Migrera från MSSQL till PostgreSQL - Vad du bör veta

  3. ProxySQL:Alla Severalnines resurser

  4. Hur man får året från en Datetime-kolumn i MySQL