sql >> Databáze >  >> RDS >> Mysql

Použití Pythonu pro přístup k SQL s názvem proměnného sloupce

Problém je pravděpodobně v použití %s pro název sloupce. To znamená Ovladač SQL se pokusí uniknout této proměnné při její interpolaci, včetně uvozovek, což není to, co chcete pro věci, jako jsou názvy sloupců, názvy tabulek atd.

Při použití hodnoty v SELECT , WHERE , atd., pak chcete použít %s abyste zabránili injekcím SQL a mimo jiné povolit citování.

Zde chcete pouze interpolovat pomocí čistého pythonu. To také znamená, že do metody provádění není předána žádná n-tice vazeb.

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

SQL housle ukazující fungování SQL:

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




  1. Co metoda Statement.setFetchSize(nSize) skutečně dělá v ovladači SQL Server JDBC?

  2. aktualizace mysql pomocí regexp

  3. Proč jsou ovlivněny 2 řádky v mém „INSERT...ON DUPLICATE KEY UPDATE“?

  4. mysqli_stmt::bind_param():Počet prvků v řetězci definice typu neodpovídá počtu proměnných vazby