如何将Python参数化MySQL语句与动态SELECT语句结合起来?

如何将Python参数化MySQL语句与动态SELECT语句结合起来?,python,mysql,Python,Mysql,我有一个后端数据库,可以使用动态SELECT语句作为列名。问题是,当我使用方法A时,列名被正确打印,但Mac_地址字段没有周围的“”。在方法B中,如果Mac_地址的引号为“”,但“”也出现在我的列名周围,则情况正好相反。我怎样才能让两者同时工作 方法A) 这是: SELECT RSSI, ADC0, ADC1 WHERE Mac_Address = xx xx xx xx xx xx SELECT 'RSSI,ADC0,ADC1' WHERE Mac_Address = 'xx xx xx x

我有一个后端数据库,可以使用动态SELECT语句作为列名。问题是,当我使用方法A时,列名被正确打印,但Mac_地址字段没有周围的“”。在方法B中,如果Mac_地址的引号为“”,但“”也出现在我的列名周围,则情况正好相反。我怎样才能让两者同时工作

方法A)

这是:

SELECT RSSI, ADC0, ADC1 WHERE Mac_Address = xx xx xx xx xx xx
SELECT 'RSSI,ADC0,ADC1' WHERE Mac_Address = 'xx xx xx xx xx xx'
这会失败,因为MySQL希望看到这样的
Mac\u地址:
'xx xx xx xx'

方法B)

这是:

SELECT RSSI, ADC0, ADC1 WHERE Mac_Address = xx xx xx xx xx xx
SELECT 'RSSI,ADC0,ADC1' WHERE Mac_Address = 'xx xx xx xx xx xx'
这会失败,因为列名周围有
'
,并且不会被视为单独的名称,但是
Mac\u Address
字段是正确的

我之所以尝试这样做,是因为列名是从远程设备动态读取的,它们都有不同的配置,因此我需要在生成SELECT语句之前列出每个设备的特定配置。

尝试以下操作:

mac_address = 'xx xx xx xx xx xx'
et_labels = ['RSSI','ADC0','ADC1]
query = """
   SELECT {0} FROM mac_tbl 
      WHERE Mac_Address = %s;
""".format(",".join(et_labels))
cursor.execute(query,(mac_address,))
在这段代码中,我们在执行查询(并传递参数)之前使用字符串格式