【发布时间】:2021-09-07 10:04:12
【问题描述】:
当我在 Oracle SQL Developer 中运行以下查询时,它运行良好并返回了我所期望的结果。
select to_timestamp(TRUNC(SYSDATE,'HH') - interval '1' hour, 'mm-dd-yyyy hh24:mi:ss') from dual
但是当我使用 cx_Oracle 在 Python 中运行它时,如下代码所示,它失败并带有以下附加的回溯。
代码:
import pandas as pd
import pyodbc
import cx_Oracle
from datetime import date, datetime
import boto3
from io import StringIO
import dateutil.relativedelta
import traceback
dsn_tns = cx_Oracle.makedsn('xyz', '1521', service_name='ABCD')
conn = cx_Oracle.connect(user=testUser', password='user123', dsn=dsn_tns)
extraction_query = '''select to_timestamp(TRUNC(SYSDATE,'HH') - interval '1' hour, 'mm-dd-yyyy hh24:mi:ss') from dual '''
完整的回溯如下:
Error in execution: Traceback (most recent call last):
File "C:\Users\AB\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\sql.py", line 1595, in execute
cur.execute(*args)
cx_Oracle.DatabaseError: ORA-01843: not a valid month
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "oracle_query.py", line 30, in <module>
df_extracted_data =pd.read_sql(extraction_query,con=conn)
File "C:\Users\AB\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\sql.py", line 410, in read_sql
chunksize=chunksize,
File "C:\Users\AB\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\sql.py", line 1645, in read_query
cursor = self.execute(*args)
File "C:\Users\AB\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\sql.py", line 1610, in execute
raise_with_traceback(ex)
File "C:\Users\AB\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\compat\__init__.py", line 46, in raise_with_traceback
raise exc.with_traceback(traceback)
File "C:\Users\AB\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\sql.py", line 1595, in execute
cur.execute(*args)
pandas.io.sql.DatabaseError: Execution failed on sql 'select to_timestamp(TRUNC(SYSDATE,'HH') - interval '1' hour, 'mm-dd-yyyy hh24:mi:ss') from dual ': ORA-01843: not a valid month
注意:连接已经过测试,可以通过 python 进行任何其他查询。
【问题讨论】:
标签: python python-3.x oracle oracle-sqldeveloper cx-oracle