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

时间:2016-11-25 13:51:32

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

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

  

追踪(最近一次呼叫最后一次):

     

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

     

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上运行此查询而没有任何问题。

请帮助。

1 个答案:

答案 0 :(得分:1)

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

最诚挚的问候