如何将Python参数化MySQL语句与动态SELECT语句结合起来?
我有一个后端数据库,可以使用动态SELECT语句作为列名。问题是,当我使用方法A时,列名被正确打印,但Mac_地址字段没有周围的“”。在方法B中,如果Mac_地址的引号为“”,但“”也出现在我的列名周围,则情况正好相反。我怎样才能让两者同时工作 方法A) 这是:如何将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 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,))
在这段代码中,我们在执行查询(并传递参数)之前使用字符串格式
嗯