我正在使用最新的 pandas 14.1 并使用 to_sql 方法写入 MS SQL Server 2008 v2 服务器。使用 SQLalchemy 作为引擎。以下带有日期时间对象的数据框按预期工作。
#test DataFrame
df1 = pd.DataFrame(index=range(10))
df1['A'] = 'Text'
df1['date_test'] = datetime.datetime(2014,1,1)
用于写入数据库的代码:
import sqlalchemy
engine = sqlalchemy.create_engine('mssql+pymssql://XXXXXXX')
df1.to_sql('test', engine, if_exists='replace')
出于业务原因,数据库中的数据需要是日期对象而不是日期时间。如果我使用:
#test DataFrame
df2 = pd.DataFrame(index=range(10))
df2['A'] = 'Text'
df2['date_test'] = datetime.date(2014,1,1) # date not datetime
to_sql 方法给出了很长的错误消息:
OperationalError: (OperationalError) (206, 'Operand type clash: datetime is incompatible
with textDB-Lib error message 206, severity 16:\nGeneral SQL Server error:
Check messages from the SQL Server.......
我的第一个怀疑是,如果在方法中使用日期,这可能是 Pandas 14.1 中新创建的功能的错误。但不确定。