【问题标题】:quotations: A syntax error has occurred. SQLCODE=-201引号:发生了语法错误。 SQLCODE=-201
【发布时间】:2021-12-02 00:43:21
【问题描述】:

我正在尝试做这样的事情:

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())

但我收到此错误:

SQLNumResultCols failed: [IBM][CLI Driver][IDS/UNIX64] A syntax error has occurred. SQLCODE=-201

我猜它是因为引号,但我不知道如何修改它。 我已经尝试过不使用反斜杠了

[SQL: select mandant,posnr,systemdat,fk_kto_auf,fk_kto_not1,fk_kto_not2,fk_kto_empf,fk_kto_adr5,fk_kto_adr6,fk_kto_adr7,fk_kto_adr8,fk_kto_adr9,adr_auftraggeber,anzahl_kolli,volumen,gewicht,lieferbedingung,aufdat,ankdat,versandort,modus,ladehafen,loeschhafen,bereich,nrkreis_nr from eakopf_t where posnr[10,10] = " " , and posnr[1,2] not in ("99","RE","UB") and mandant <> 999;]

【问题讨论】:

  • 请注意,您打印的消息与您引用的 SQL 语句不匹配。您引用的错误字符串中的问题不是 FROM 与前面的列名的连接,而是 WHERE 条件中间的杂散逗号 - …,nrkreis_nr from eakopf_t where posnr[10,10] = " " , and…; AND 之前的逗号是语法错误。这在我的回答末尾提到。
  • 请注意,打印 SQL(query 中的值)将有助于揭示问题。这是一个非常。调试 SQL 操作的基本部分,IMO。

标签: sql pandas sqlalchemy informix


【解决方案1】:

你有:

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;"
)

nrkreis_nrfrom 之间没有空格分隔,因此打印的查询将包含:

select mandant,posnr,lieferbedingung,nrkreis_nrfrom eakopf_t where …

最好在每个续行的开头(或结尾)放置空格:

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;"
)

当一行行尾或下一行行首有标点符号时不需要(所以字符串第一行末尾的逗号表示下一行开头的空格不是强制),但这是最安全的。

我还删除了一个杂散的逗号和空格:

"from eakopf_t where posnr[10,10] = \" \" , and posnr[1,2] not in (\"99\",\"RE\",\"UB\")"

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 2015-03-07
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
相关资源
最近更新 更多