Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de Python pour accéder à SQL avec un nom de colonne variable

Le problème est probablement l'utilisation de %s pour le nom de la colonne. Cela signifie que le pilote SQL essaiera d'échapper à cette variable lors de son interpolation, y compris les guillemets, ce qui n'est pas ce que vous voulez pour des choses comme les noms de colonnes, les noms de tables, etc.

Lors de l'utilisation d'une valeur dans SELECT , WHERE , etc., alors vous voulez utiliser %s pour empêcher les injections SQL et activer les citations, entre autres.

Ici, vous voulez juste interpoler en utilisant du python pur. Cela signifie également qu'aucun tuple de liaison n'est transmis à la méthode d'exécution.

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

Violon SQL montrant le fonctionnement du SQL :

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