python - 由数据框形成的逗号分隔列表在传递到 SQL 时中断
问题描述
当我的数据框中没有任何值时,我的查询会中断。
我有数据框data1['invoice_number']
,我将另一个 sql 作为逗号分隔列表传递。
下面的代码在我们有值时完美运行,但在我没有任何值时会中断。
sql1 = '''selectcarrier_account, invoice_number, invoice_amount, currency, invoice_date
from invoice_summary where invoice_number in ({})'''.format(','.join(["'{}'".format(x) for x in data1['invoice_number']]))
inv_summary= pd.read_sql_query(sql1,cnx)
错误
psycopg2.errors.SyntaxError) syntax error at or near ")"
LINE 2: from invoice_summary where invoice_number in ()
有没有办法我仍然可以在不中断的情况下执行此查询。
解决方案
MySQL 不允许在IN ()
. 如果您不想在列表为空时跳过查询,您可以做的是在 SQL 列表中添加一个永远不会匹配的额外元素。
sql1 = '''selectcarrier_account, invoice_number, invoice_amount, currency, invoice_date
from invoice_summary where invoice_number in ('', {})'''.format(','.join(["'{}'".format(x) for x in data1['invoice_number']]))
推荐阅读
- node.js - 在返回云函数响应之前等待 firestore 查询完成
- python - 使用互信息进行特征映射之间的特征选择(python)
- javascript - 未捕获的类型错误:无法在“XMLSerializer”上执行“serializeToString”:无法将 svg(使用 D3.js 创建)下载为 png/pdf
- typescript - 代码未在 ngOnInit(){} 中按所需顺序运行
- r - 在 R 中的带状图中使用 text3D
- git - 我做了一个 git pull origin
在开发这不是我想做的 - excel - 运行时错误 429 - Active X 无法发送电子邮件
- debugging - Azure 机器人服务中的跟踪
- sql - 组合复杂查询,从 4 个表中选择
- gradle - Gradle 5:BOM 依赖项未写入 pom 文件