【发布时间】:2020-01-29 21:33:51
【问题描述】:
在将 pandas 数据帧写入 MSSQL 数据库上的表时,时间戳条目的时区偏移设置为 +00:00,尽管数据帧中的时间戳包含 CE(S)T 偏移 +02:00。
我正在创建一个包含三列的简单表,其中一列包含日期时间时区感知时间戳。在 SQL 服务器上创建表时,所述列数据类型设置为 datetimeoffset(7)。
name = ['price']*24
values = np.random.rand(24)
starttimes = pd.date_range('2019-09-10 00:00', '2019-09-10 23:00', freq='h', tz='CET')
df = pd.DataFrame({'start_time': starttimes, 'values': values, 'item': name})
engine = sqlalchemy.create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
df.to_sql(
name='test_table',
con=engine,
index=False,
if_exists='append',
dtype={'start_time': DateTime(timezone=True)}
)
当数据帧被插入到数据库中的表中时,偏移量变为+00:00 而不是+02:00。 例如,原始数据框有一个条目 2019-09-10 00:00:00+02:00 服务器上的哪个变成 2019-09-10 00:00:00.0000000 +00:00
当我使用 pyodbc 代替我安装了 Microsoft ODBC 驱动程序 17 的 pymssql 时,问题仍然存在。
【问题讨论】:
标签: sql-server pandas sqlalchemy pyodbc pymssql