Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie Pythona do uzyskiwania dostępu do SQL ze zmienną nazwą kolumny

Problemem jest prawdopodobnie użycie %s dla nazwy kolumny. Oznacza to, że sterownik SQL spróbuje uciec od tej zmiennej podczas jej interpolacji, łącznie z cytowaniem, co nie jest tym, czego chcesz w przypadku nazw kolumn, nazw tabel itp.

Gdy używasz wartości w SELECT , WHERE itp., to chcesz użyć %s aby zapobiec wstrzykiwaniu SQL i włącz cytowanie, między innymi.

Tutaj po prostu chcesz interpolować za pomocą czystego Pythona. Oznacza to również, że żadna krotka powiązań nie została przekazana do metody execute.

def findmin(column):
    cur = db.cursor()
    sql = "SELECT MIN({0}) FROM table".format(column)
    cur.execute(sql)
    mintup = cur.fetchone()

Skrzypce SQL pokazujące działanie SQL:

http://sqlfiddle.com/#!2/e70a41/1




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XAMPP MySQL — ustawienie ft_min_word_len

  2. MySQL:zapytania dotyczące jednostek Unicode

  3. Próbuję zbudować statyczną klasę bazy danych, do której mogę uzyskać dostęp z dowolnej funkcji spoza klasy

  4. Podczas wykonywania polecenia wystąpił błąd krytyczny

  5. Wyzwalacz MySQL do wstawiania danych do innej bazy danych