【发布时间】:2017-11-26 16:35:48
【问题描述】:
这是我的代码:
import pymysql
import pymysql.cursors
# ...
for w in aList:
param = w
cursor.execute("SELECT * FROM test where text like %(p)s", {"p": "%%{}%%".format(param)})
result_set = cursor.fetchall()
for row in result_set:
print(row)
我没有执行任何操作,也没有错误。
与本网站上的类似问题和答案不同,我的问题是关于一个由两个通配符包围的变量。这个变量在循环中每次都会改变,而不是固定的字符串(在这种情况下它将执行)。
提前非常感谢!乔安妮
【问题讨论】:
-
我没有收到错误消息。我在做:
cursor.execute("SELECT * from mysql.db WHERE Host like %(p)s', {'p': '%%{}%%.format(param)')这将返回 2。如果我将参数更改为 'google',我会得到一个零。 -
你能打印出param是什么吗?
-
是的,我可以打印参数。它们是列表中元组中的第一项,即字符串。如:喜欢明星
-
问题是如果你的参数是一个固定的字符串,你绝对可以让它工作。但是我的参数是一个变量,它会在循环中改变。结果没有给我任何东西。我认为这里的问题是关于出现在类似变量中并被通配符包围的变量的语法问题。
-
不完全理解 param 是什么。我的 aList 是 [ 'localhost', 'google'] 并且您的代码有效(我确实将测试更改为 mysql.db 并将文本更改为主机)。我认为您需要评估 aList 中的内容,打印语句会有所帮助。你可能会发现它不是一个简单的类型(string、int、float等)。
标签: python mysql variables wildcard pymysql