我正在尝试使用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上运行此查询而没有任何问题。
请帮助。
答案 0 :(得分:1)
最近发生在我身上。不用用三个引号来打开字符串,而是使用四个引号。结果:Oracle尝试将整个请求解释为一个标识符。
最诚挚的问候