2017-02-16 53 views
0

我在Python 2.7中使用PyMySQL。我必須創建一個函數 - 在給定表名的情況下,查詢將找到所有列名的唯一值。PyMySQL在Python中爲表名分配變量

由於涉及多個表,我不想硬編碼表名。現在,一個簡單的查詢是這樣的:

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

我想要做的事,如:

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

我收到以下錯誤:

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

能有人幫。 TIA

回答

0

確保您使用的數據庫是正確的,並使用%s來格式化您的sql語句。

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() 

希望這會有所幫助。

+0

嗨,非常感謝。有效。 – chhibbz

+0

如果需要,這不會轉義表名稱。它根本不使用pymysql轉義工具,只是使用python字符串格式。 –