【发布时间】: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