gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:09:01 26 4
gpt4 key购买 nike

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

方法A)

mac_address = 'xx xx xx xx xx xx'
et_labels = ['RSSI','ADC0','ADC1]
sql = "SELECT %s FROM mac_tbl WHERE Mac_Address = %s" % ((','.join(map(str,et_labels))),mac_address)
cursor.execute(sql)

运行:

SELECT RSSI, ADC0, ADC1 WHERE Mac_Address = xx xx xx xx xx xx

这会失败,因为 MySQL 希望看到像这样的 Mac_Address:'xx xx xx xx xx xx'

方法B)

mac_address = 'xx xx xx xx xx xx'
et_labels = ['RSSI','ADC0','ADC1]
cursor.execute("""SELECT %s from mac_tbl WHERE Mac_Address = %s;""",(",".join(et_labels),mac_address))

运行:

SELECT 'RSSI,ADC0,ADC1' WHERE Mac_Address = 'xx xx xx xx xx xx'

此操作失败,因为列名称周围有 ' ',并且不被视为单独的名称,但 Mac_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,))

在此代码中,我们在执行查询(并传递参数)之前使用字符串格式

HTH。

关于python - 如何将 Python 参数化 MySQL 语句与动态 SELECT 语句结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com