gpt4 book ai didi

python - 在Python中执行mysql查询时如何删除变量周围的单引号?

转载 作者:行者123 更新时间:2023-11-29 10:43:37 25 4
gpt4 key购买 nike

我有一个关于 Python 中使用的 mysql 的问题。基本上我在使用 Flask 的网页上有一个下拉菜单,它提供了更改 mysql 查询的参数。这是我的问题的代码片段。

select = request.form.get('option')
select_2 = request.form.get('option_2')
conn = mysql.connect()
cursor = conn.cursor()
query = "SELECT * FROM tbl_user WHERE %s = %s;"
cursor.execute(query, (select, select_2))
data = cursor.fetchall()

这不会从查询中返回任何数据,因为第一个变量周围有单个 qoutes,即

Select * from tbl_user where 'user_name' = 'Adam' 

Select * from tbl_user where user_name = 'Adam'. 

有人能为我解释如何删除列周围的这些单引号吗?当我对我想要使用的列进行硬编码时,它会返回我想要的数据,但是当我尝试这样做时,它只会返回 []。如有任何帮助,我们将不胜感激。

最佳答案

我有一个处理 pymysql 的可行解决方案,即重写类“pymysql.connections.Connection”中的转义方法,这显然会在字符串周围添加“'” 。也许你可以尝试类似的方式,检查一下:

from pymysql.connections import Connection, converters


class MyConnect(Connection):
def escape(self, obj, mapping=None):
"""Escape whatever value you pass to it.

Non-standard, for internal use; do not use this in your applications.
"""
if isinstance(obj, str):
return self.escape_string(obj) # by default, it is :return "'" + self.escape_string(obj) + "'"
if isinstance(obj, (bytes, bytearray)):
ret = self._quote_bytes(obj)
if self._binary_prefix:
ret = "_binary" + ret
return ret
return converters.escape_item(obj, self.charset, mapping=mapping)


config = {'host':'', 'user':'', ...}
conn = MyConnect(**config)
cur = conn.cursor()

关于python - 在Python中执行mysql查询时如何删除变量周围的单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45020495/

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