如何在Python中去除字符串引号?SQL查询场景问题求助
问题解决:去除SQL语句中表名的多余引号
问题根源:request.args.getlist('tickers')返回的是列表类型,而非单个字符串。当你用str(tickers)转换时,会把整个列表的格式(包括方括号、元素的引号)都转成字符串,比如["Infosys"]会变成"['Infosys']",拼到SQL里就出现了多余的引号。
解决方案
情况1:仅传递单个股票代码
直接取列表的第一个元素,拿到纯字符串的股票代码:
# 获取列表后取第一个元素 tickers = request.args.getlist('tickers')[0] # 用f-string拼接SQL,表名用方括号包裹 data = pd.read_sql_query(f'select * from [dbo].[{tickers}]', engine)
这样生成的SQL就是正确的select * from [dbo].[Infosys]。
情况2:可能传递多个股票代码
如果需要处理多个表,可遍历列表拼接SQL:
tickers_list = request.args.getlist('tickers') # 拼接多表查询的SQL(以union all为例) sql_parts = [f'select * from [dbo].[{ticker}]' for ticker in tickers_list] full_sql = ' union all '.join(sql_parts) data = pd.read_sql_query(full_sql, engine)
额外提醒
直接拼接字符串到SQL存在SQL注入风险,生产环境建议先验证输入的股票代码是否在合法列表中,或使用参数化查询规避安全问题。
内容的提问来源于stack exchange,提问作者user11740857
相关产品推荐
相关产品推荐

