sql >> Database >  >> RDS >> Mysql

Python gebruiken om toegang te krijgen tot SQL met een variabele kolomnaam

Het probleem is waarschijnlijk het gebruik van %s voor de kolomnaam. Dat betekent dat het SQL-stuurprogramma zal proberen te ontsnappen aan die variabele bij het interpoleren ervan, inclusief aanhalingstekens, wat niet is wat je wilt voor zaken als kolomnamen, tabelnamen, enz.

Bij gebruik van een waarde in SELECT , WHERE , etc. dan wil je wel %s . gebruiken om SQL-injecties te voorkomen en onder andere citeren inschakelen.

Hier wil je gewoon interpoleren met pure python. Dat betekent ook dat er geen bindings-tuple wordt doorgegeven aan de execute-methode.

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

SQL-viool die de werking van SQL laat zien:

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




  1. Bulksgewijs invoegen in Oracle-database:wat is beter:VOOR Cursorlus of een eenvoudige Select?

  2. SQL SELECT voor beginners

  3. Hoe moeten Unix-tijdstempels worden opgeslagen in int-kolommen?

  4. Join verwijderen uit twee tabellen