为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 pandasql 查询中使用动态变量(元组)?

如何在 pandasql 查询中使用动态变量(元组)?

翻过高山走不出你 2023-10-06 16:38:30
number_tuple = (1,4,6,3) sensex_quaterly_df = psql.sqldf("SELECT * FROM sensex_dfWHERE 'Num' IN ('number_tuple')")“这里 number_tuple 有我想从 sensex_df 数据库检索的值”
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

因为pandasql允许您在数据帧上运行 SQL,所以您可以使用 . 将元组的串联值构建为逗号分隔的字符串string.join()。


number_tuple = (1,4,6,3)

in_values = ", ".join(str(i) for i in number_tuple)


sql = f"SELECT * FROM sensex_df WHERE Num IN ({in_values})"


sensex_quaterly_df = psql.sqldf(sql)

但是,如果您使用实际的关系数据库作为后端,则不建议使用连接的 SQL 字符串。如果是这样,请使用参数化,在开发准备好的 SQL 语句时使用占位符(如%sof?和后续步骤绑定值)。下面用 pandas 演示read_sql:


number_tuple = (1,4,6,3)

in_values = ", ".join('?' for i in number_tuple)


sql = f"SELECT * FROM sensex_df WHERE Num IN ({in_values})"


sensex_quaterly_df = pd.read_sql(sql, conn, params=number_tuple)


查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信