gpt4 book ai didi

python - MySQL 返回列的名称而不是值

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:35 25 4
gpt4 key购买 nike

我正在读取 MySQL 数据库以使用以下命令查找数据库中特定列的值:

select = ["c9", "TEMP"]
c.execute("SELECT Client, %s, Date_Time FROM data WHERE Client = %s and Date_Time > '2016-04-26 18:17:15'", (select[1],select[0]))

但是我得到的是下面的值,这些值对于第一列和第三列是正确的,但是,我得到的是第二列的名称而不是值:

('c9', 'TEMP', datetime.datetime(2016, 4, 26, 20, 6, 53))
('c9', 'TEMP', datetime.datetime(2016, 4, 26, 20, 7, 53))
('c9', 'TEMP', datetime.datetime(2016, 4, 26, 20, 8, 53))

例如代替这个

('c9', '2700', datetime.datetime(2016, 4, 26, 20, 6, 53))
('c9', '2720', datetime.datetime(2016, 4, 26, 20, 7, 53))
('c9', '2700', datetime.datetime(2016, 4, 26, 20, 8, 53))

那么,如何检索值而不是列名?

最佳答案

不能在查询中参数化列名。您必须以其他方式插入列名:

select = ["c9", "TEMP"]
query = "SELECT Client, {}, Date_Time FROM data WHERE Client = %s and Date_Time > '2016-04-26 18:17:15'".format(select[1])
cursor.execute(query, (select[0],))

请注意,这会使您在插入列名的地方容易受到 SQL 注入(inject)攻击。您需要检查它以确保它是安全的。我宁可谨慎行事,也可以这样做:

assert select[1].isalnum()

(AssertionError 可能不是这里的正确错误,因为它应该用于检查内部不变量。引发 ValueError 或自定义异常 < em>可能更合适)。

关于python - MySQL 返回列的名称而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956225/

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