如何使用to_sql()将包含pd.Period的pandas数据帧上载到数据库

如何使用to_sql()将包含pd.Period的pandas数据帧上载到数据库,pandas,sqlalchemy,pyodbc,Pandas,Sqlalchemy,Pyodbc,我正在尝试使用to_SQL将数据帧上载到SQL Server 由于我正在处理的数据包含一个时间戳列,其范围从ca 1900到8999,因此我使用了“越界”解决方法。简而言之,解决方法是使用 这与预期的一样,数据帧现在包含正确的编码日期esPeriods 以下是df.dtypes measureDate period[S] 当我尝试像这样上传数据帧时 df.to_sql(db_table, engine, if_exists='append', chunksize=500000)

我正在尝试使用
to_SQL
将数据帧上载到SQL Server

由于我正在处理的数据包含一个时间戳列,其范围从ca 1900到8999,因此我使用了“越界”解决方法。简而言之,解决方法是使用

这与预期的一样,数据帧现在包含正确的编码日期es
Period
s

以下是
df.dtypes

measureDate       period[S]
当我尝试像这样上传数据帧时

df.to_sql(db_table, engine, if_exists='append', chunksize=500000)
上载失败,出现以下错误:

ValueError: cannot infer type for <class 'NoneType'>
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('Invalid parameter type.  param-index=2 param-type=Period', 'HY105')
我得到这个错误:

ValueError: cannot infer type for <class 'NoneType'>
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('Invalid parameter type.  param-index=2 param-type=Period', 'HY105')

期间
s作为SQL Server日期时间列上载的正确方法是什么?

能否将
测量日期
列转换为字符串表示形式(例如,
'1066-10-14 08:15:12'
在调用
到\u SQL()之前
?我可以,但这不会上传一个字符串到数据库,而不是一个日期时间吗?如果您正在插入一个现有表(
If_exists='append'
),并且相应的列是一个日期时间类型,那么数据库引擎可能会为您从字符串进行转换。将其保存为pythons datetime(因此熊猫将其显示为
对象
,并将其上载到sql server
日期时间
——该列确实有效,谢谢!