Python 使用SQLAlchemy将具有时区感知列的熊猫作为字符串插入SQL Server
我正在努力将JSON数据插入到包含时区信息的SQL Server中。我知道数据类型DATETIMEOFFSET不起作用。我很乐意将数据放在VARCHAR列中,稍后我可以将其转换为真正的时区感知数据类型Python 使用SQLAlchemy将具有时区感知列的熊猫作为字符串插入SQL Server,python,sql-server,pandas,sqlalchemy,timezone,Python,Sql Server,Pandas,Sqlalchemy,Timezone,我正在努力将JSON数据插入到包含时区信息的SQL Server中。我知道数据类型DATETIMEOFFSET不起作用。我很乐意将数据放在VARCHAR列中,稍后我可以将其转换为真正的时区感知数据类型 import pandas as pd import json from sqlalchemy import create_engine, NVARCHAR json_data = json.dumps([{ "date" : "2019-08-13T11:12:05+02:00"}]) df
import pandas as pd
import json
from sqlalchemy import create_engine, NVARCHAR
json_data = json.dumps([{ "date" : "2019-08-13T11:12:05+02:00"}])
df = pd.read_json(json_data, dtype='object')
con='mssql+pyodbc://database'
engine = create_engine(con, encoding='utf-8', echo=False)
table_name = "load"
columns = {'date': NVARCHAR()}
print(df.dtypes)
df.to_sql(table_name, con=engine, if_exists='replace', dtype=columns, index=False)
无论我做什么,我总是在SQL Server中获得2019-08-13 11:12:05.0000000作为一个值
如您所见,我试图说服Python在加载数据帧时使用object作为数据类型,并将NVARCHAR设置为目标的数据类型。在某些地方,这仍然被翻译成DATETIME27
有没有一种方法,我可以在SQL Server中将时区感知字符串作为字符串登录?一个简单的解决方案是在调用SQL之前将pandas Timestamp列转换为字符串: json_data=json.dumps[{日期:2019-08-13T11:12:05+02:00}] df=pd.read_jsonjson_数据 将时间戳列转换为字符串 df=df.astype{'date':numpy.str} 表_name=tmp df.to_sqltable_名称,引擎,如果_exists='replace',index=False 使用发动机。以连接方式开始: printconn.executefSELECT*FROM[{table_name}].fetchall ['2019-08-13 11:12:05+02:00',]
SqlServer中“加载”表的日期列使用的数据类型是什么?nvarchar。上面的示例自动创建具有该数据类型的表。