【问题标题】:Python error: cx_Oracle.DatabaseError: ORA-00972: identifier is too longPython 错误:cx_Oracle.DatabaseError:ORA-00972:标识符太长
【发布时间】:2017-04-09 22:44:09
【问题描述】:

我正在尝试使用 cx_Oracle 在 Python 上运行 SQL 查询,并不断收到错误消息,完整的错误如下所示:

Traceback(最近一次调用最后一次):

文件“Z:\fex\petrolpanel\PPL.PY”,第 45 行,在 ''

curs.execute(sql)

cx_Oracle.DatabaseError: ORA-00972: 标识符太长

一开始我以为是因为我将一些变量解析到查询中,但我删除了这些,然后我认为是因为原来的有一些内置计算,所以我也删除了。还是不行。

这是脚本的相关部分:

sql = """"
SELECT PERIOD_YEAR, PERIOD_WEEK, PURCHASE_NUMBER, 
VALIDATION_FIELD, ORIGINAL_VAL_FIELD, SHOP_CODE, 
QUANTITY, TOTAL_PRICE
FROM OPS$OM1.ET0800
WHERE DELETE_FLAG = 'N' AND LATE_FLAG = 'E' AND ERROR_FLAG <> 'F' 
AND VALIDATION_FIELD < 100 AND PERIOD_YEAR = 2016 AND PERIOD_WEEK BETWEEN 41 AND 44
"""

# Execute SQL
curs.execute(sql)

rows = curs.fetchall()

在这之前的一切都很好,在这之后没有任何东西运行。有什么想法可能是错的吗?当我在 Google 上查看错误本身时,我得到:

您尝试使用超过 30 个字符的值引用表、集群、视图、索引、同义词、表空间或用户名。

但是该查询中没有超过 30 个字符,我认为最长的字段是 18 个字符,而表名本身只有 6 个字符长。我也可以在 Oracle Developer 上运行此查询而没有任何问题。

请帮忙。

【问题讨论】:

  • sql = """" 那里有 4 组双引号,而不是 3 组。
  • 谢谢你,解决了我的问题,你是明星!

标签: python python-3.x oracle-sqldeveloper cx-oracle


【解决方案1】:

最近发生在我身上。而不是用三个引号打开你的字符串,你放了四个。结果:Oracle 尝试将整个请求解释为标识符。

最好的问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-22
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2012-07-09
    • 2015-04-09
    相关资源
    最近更新 更多