You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:01:26