IBM IDS数据库执行SQL报SQLCODE=-201语法错误,引号问题如何解决
问题原因
你的SQL报错SQLCODE=-201是语法错误,由三个问题共同导致:
- Python拼接SQL字符串时漏加空格,
"lieferbedingung,nrkreis_nr"和下一行的"from eakopf_t..."直接拼接后会变成nrkreis_nrfrom,属于非法语法 - WHERE条件里
posnr[10,10] = " "后面多了多余的逗号,SQL的WHERE条件之间仅用AND/OR连接,不需要逗号分隔 - SQL标准中字符串字面量需要用单引号
'包裹,你用了双引号,数据库会将双引号内的内容识别为字段名而非字符串值,触发语法错误
修复后代码
推荐直接用Python三引号编写多行SQL,不需要处理拼接空格、引号转义的问题:
query = """ SELECT mandant, posnr, lieferbedingung, nrkreis_nr FROM eakopf_t WHERE posnr[10,10] = ' ' AND posnr[1,2] NOT IN ('99', 'RE', 'UB') AND mandant <> 999; """ queryset += [(query, filename)] df = pd.read_sql(query, engine.connect())
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

