【问题标题】:Sqlalchemy datetime insert into OracleSqlalchemy 日期时间插入 Oracle
【发布时间】:2021-03-13 11:39:57
【问题描述】:

我正在使用 sqlalchemy 和 to_sql 将我的日期帧插入到我的 Oracle 表中。一切正常,但我在表的末尾添加了一个 DATE 列,并且无法让 sqlalchemy 插入该值。

这里是短代码sn-p:

x = datetime.datetime.now()
y = x.strftime("%Y-%m-%d %H:%M:%S")
df['date_appended'] = y

df_ora.to_sql('table_name', con, if_exists='append', index=False, dtype={'date_appended': sqlalchemy.DateTime()})

cx_Oracle.DatabaseError) ORA-01861: literal does not match format string
'date_appended': '2020-12-01 08:18:36'

有什么建议吗?

【问题讨论】:

    标签: pandas oracle date sqlalchemy


    【解决方案1】:

    According to the documentation sqlalchemy.DateTime() 类型产生 datetime.datetime 对象,这建议我在保存时应该提供这些对象:

    x = datetime.datetime.now()
    df['date_appended'] = x
    
    df_ora.to_sql('table_name', con, if_exists='append', index=False, dtype={'date_appended': sqlalchemy.DateTime()})
    

    请注意,这是有根据的猜测

    【讨论】:

    • 这给了我这个错误:ORA-01830:日期格式图片在转换整个输入字符串之前结束。似乎 Oracle 希望列类型为 TIMESTAMP,而不仅仅是 DATE。我觉得这很好奇............
    • @LandonStatis 如果您想使用DATE,那么您可能需要python 类型datetime.datesqlalchemy.Date()
    • 那么,你是说 x = datetime.date.now() 吗??
    • 如果你想要当前日期,你应该使用datetime.date.today()
    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2020-07-24
    • 2014-10-25
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多