PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przekazywanie nazwy tabeli jako parametru w psycopg2

Zgodnie z oficjalną dokumentacją:

Jeśli potrzebujesz dynamicznie wygenerować zapytanie SQL (na przykładwybierz dynamicznie nazwę tabeli ) możesz skorzystać z funkcji zapewnianych przez moduł psycopg2.sql.

sql moduł jest nowy w psycopg2 w wersji 2.7. Ma następującą składnię:

from psycopg2 import sql

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

Więcej na:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql

[Aktualizacja 2017-03-24:AsIs NIE powinien być używany do reprezentowania nazw tabel lub pól, nowy sql zamiast tego należy użyć modułu:https://stackoverflow.com/a/42980069/5285608 ]

Ponadto, zgodnie z dokumentacją psycopg2:

Ostrzeżenie :nigdy, nigdy , NIGDY użyj konkatenacji ciągów Pythona (+ ) lub interpolacja parametrów ciągu (% ), aby przekazać zmienne do ciągu zapytania SQL. Nawet na muszce.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL INSERT ON CONFLICT UPDATE (upsert) użyj wszystkich wykluczonych wartości

  2. Jak zaktualizować wiele kolumn w PostgreSQL

  3. Czy istnieje sposób na zdefiniowanie nazwanej stałej w zapytaniu PostgreSQL?

  4. Jak obsłużyć błąd Ruby on Rails:Proszę zainstalować adapter postgresql:`gem install activerecord-postgresql-adapter'

  5. Jak zaimportować zrzut Heroku PG na komputer lokalny?