sql >> Databasteknik >  >> RDS >> PostgreSQL

Skickar tabellnamn som en parameter i psycopg2

Enligt den officiella dokumentationen:

Om du behöver generera en SQL-fråga dynamiskt (till exempel att dynamiskt välja ett tabellnamn ) kan du använda faciliteterna som tillhandahålls av modulen psycopg2.sql.

sql modulen är ny i psycopg2 version 2.7. Den har följande syntax:

from psycopg2 import sql

cur.execute(
    sql.SQL("insert into {} values (%s, %s)")
        .format(sql.Identifier('my_table')),
    [10, 20])

Mer på:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql

[Uppdatering 2017-03-24:AsIs ska INTE användas för att representera tabell- eller fältnamn, den nya sql modulen bör användas istället:https://stackoverflow.com/a/42980069/5285608 ]

Dessutom, enligt psycopg2 dokumentation:

Varning :Aldrig, aldrig , ALDRIG använd Python-strängsammansättning (+ ) eller interpolering av strängparametrar (% ) för att skicka variabler till en SQL-frågesträng. Inte ens under pistolhot.



  1. Får Oracle PL/SQL serverns IP v4?

  2. Analysera JSON i TSQL

  3. Exportera din databas för överföring

  4. Fel vid användning av mönstermatchning som inte liknar någon annan i PostgreSQL