2017-02-16 3 views
0

Ich benutze PyMySQL in Python 2.7. Ich muss eine Funktion erstellen - wobei die Abfrage bei einem Tabellennamen eindeutige Werte aller Spaltennamen findet.PyMySQL eine Variable zu Tabellenname zuweisen, in Python

Da es mehr als eine Tabelle gibt, möchte ich den Tabellennamen nicht fest codieren. Nun wird eine einfachere Abfrage ist wie:

cursor.execute(" SELECT DISTINCT(`Trend`) AS `Trend` FROM `Table_1` ORDER BY `Trend` DESC  ") 

ich etwas tun wollen wie:

tab = 'Table_1' 
cursor.execute(" SELECT DISTINCT(`Trend`) AS `Trend` FROM tab ORDER BY `Trend` DESC  ") 

Ich erhalte die folgende Fehlermeldung:

ProgrammingError: (1146, u"Table 'Table_1.tab' doesn't exist") 

Kann jemand bitte helfen. TIA

Antwort

0

Stellen Sie sicher, dass die von Ihnen verwendete Datenbank korrekt ist, und verwenden Sie %s, um Ihre SQL-Anweisung zu formatieren.

DB_SCHEMA='test_db' 
table_name='table1' 
connection = pymysql.connect(host=DB_SERVER_IP, 
          port=3306, 
          db=DB_SCHEMA, 
          charset='UTF8', 
          cursorclass=pymysql.cursors.DictCursor 
          ) 
try: 
    with connection.cursor() as cursor: 
     sql = "SELECT DISTINCT(`Trend`) AS `Trend` FROM `%s` ORDER BY `Trend` DESC"%(table_name) 

     cursor.execute(sql) 

    connection.commit() 
except Exception as e: 
    print e 
finally: 
    connection.close() 

Hoffe das hilft.

+0

Hallo, vielen Dank. Es funktionierte. – chhibbz

+0

Der Name der Tabelle wird bei Bedarf nicht verworfen. Es verwendet nicht die pymysql Escape-Funktionen überhaupt, nur Python-String-Formatierung. –

Verwandte Themen