将字典写入Oracle表

时间:2020-04-14 17:11:21

标签: python-3.x oracle date pyspark pyspark-dataframes

我有一个字典,其中有键对值,并且我需要将字典写到oracle表中,表中的日期不允许写该值,并引发错误。

代码:

Prod_id = '202001_201911_MIT_LZZ'
market_code = 'GT01'

transaction_dt = (datetime.today()).strftime('%Y-%m-%d')
timestamp = "_" + transaction_dt.replace("-", "")

d = {}
d['ALERT_EXTRL_REF_ID'] = [alert_Id]
d['TXN_DT'] = [transaction_dt]
df_load_summary = pd.DataFrame.from_dict(d)

df_load_summary["TXN_DT"] = df_load_summary["TXN_DT"].astype("datetime64[ns]")

write_to_oracle_cmt(df_load_summary,spark,'Table_to_write')

在写入Oracle时出错:

Caused by: java.sql.BatchUpdateException: ORA-00932: inconsistent datatypes: expected DATE got NUMBER

1 个答案:

答案 0 :(得分:1)

我认为问题出在这里:

transaction_dt =(datetime.today())。strftime('%Y-%m-%d')

以上输出的返回类型是“字符串”而不是“日期时间”。

(&) :: a -> (a -> b) -> b

无需格式化日期时间并将其作为字符串传递,而将日期时间值直接作为 datatime 类型传递

>> transaction_dt = (datetime.today()).strftime('%Y-%m-%d')
>> print(transaction_dt)
2020-04-14
>> type(transaction_dt)
<class 'str'>

现在让 cx_Oracle 在execute语句中对其进行处理:

>> type(datetime.datetime.now())
<class 'datetime.datetime'>

here有一些很好的解释。

相关问题