我正在尝试使用带有 jaydebeapi 的 Python 从 Oracle 9i 数据库中查询一个表。它连接成功,光标和 fecth 似乎工作得很好,但是当我显示结果时,只有表格的数字字段可用。
我尝试了一些 Oracle 函数,如 TO_CHAR、SUBSTR 和 TRIM,以查看更改其值是否有助于显示它,但它们都不起作用。
import jaydebeapi
import jpype
import os
sql = "select 0 as order, ST_CODE_PDV, ST_NAME_PDV, ST_CHANNEL, \
ST_ACCESS, 'Safra', sum(ACTIVATION), sum(FRAUD) \
from MY_TABLE \
WHERE ST_CODE_PDV <> '-1' \
HAVING sum(FRAUD) > 0 \
group by ST_CODE_PDV, ST_NAME_PDV, ST_CHANNEL, ST_ACCESS, 'Safra'"
try:
jar = os.getcwd()+'\ojdbc8.jar'
args = '-Djava.class.path=%s' % jar
jpype.startJVM("C:\\Program Files\\Java\\jre1.8.0_121\\bin\\server\\jvm.dll", args)
cn = jaydebeapi.connect('oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:@dbserverinfo', ["user","pass"])
print("Connection Successful")
curs = cn.cursor()
curs.execute(sql)
result = curs.fetchall()
for r in result:
print(r)
curs.close()
cn.close()
except Exception as e:
print("connection error:", e)
预期结果是:
(0.0, 'NE99_TSR02X_TS9876_XY001', 'STARK TELECOM', '代理销售', '', 'Safra', 6.0, 1.0)
但我的代码显示:
(0.0, '', '', '', '', 'Safra', 6.0, 1.0)
不显示任何结果的字段是 VARCHAR2 类型。显示字符串“Safra”,但在我的查询中是硬编码的。
我尝试了其他表,但问题是相同的(仅返回数字字段)。
可能会发生什么?