gpt4 book ai didi

python - 在 mysql 表中查询动态列名及其在 python 中的值?

转载 作者:行者123 更新时间:2023-11-29 02:38:51 28 4
gpt4 key购买 nike

我想在 mysql 表中搜索指定列具有特定值的行。例如,给定输入字符串 memory=2048 它将搜索具有 "2048" 作为 memory 列的值的行,并且它将打印它们。

这是我试过的代码,但它什么也没打印出来。

input = input()
tag = input.split("=")
desc = tag[1]
tag = tag[0]

mycursor = mydb.cursor()
sql = "(SELECT * FROM comp WHERE %s LIKE %s)"
val = (tag, desc)
mycursor.execute(sql, val)
res = mycursor.fetchall()
for x in res:
print(x)

其次,我尝试了这段代码以查看问题出在哪里:

input = input()
tag = input.split("=")
desc = tag[1]
tag = tag[0]

mycursor = mydb.cursor()
sql = "(SELECT * FROM comp WHERE memory LIKE '2048')"
mycursor.execute(sql)
res = mycursor.fetchall()
for x in res:
print(x)

它给出了所需的输出。所以我的问题是,当我试图用 %s 获取列名时,它作为“内存”出现,但找不到它,因为列名是内存。有没有办法摆脱 '' 字符?

confirmation of inputs

最佳答案

查看 mysql.connector's execute() documentation它似乎使用 %s 作为绑定(bind)参数的占位符。

因此您的 execute("SELECT * FROM comp WHERE %s LIKE %s", ("memory", "2048")) 调用最终像以下 SQL 一样运行:

SELECT * FROM comp WHERE 'memory' LIKE '2048'

显然返回 0 行。

在调用 execute() 之前,您需要将文字列名称放入查询文本中:

sql = "SELECT * FROM comp WHERE %s LIKE %s" % (tag, "%s")
# => "SELECT * FROM comp WHERE memory LIKE %s"
mycursor.execute(sql, (desc, ))

关于python - 在 mysql 表中查询动态列名及其在 python 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57478244/

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