gpt4 book ai didi

python - Pandas to_sql 更改数据库表中的数据类型

转载 作者:行者123 更新时间:2023-12-01 01:26:29 28 4
gpt4 key购买 nike

有人经历过这种情况吗?

我有一个包含“int”和“varchar”列的表 - 一个报告时间表。

我正在尝试使用 python 程序将扩展名为“.xls”的 Excel 文件导入到该表中。我正在使用 pandas to_sql 读取 1 行数据。

导入的数据为1行11列。

导入工作成功,但导入后我注意到原始表中的数据类型现已更改:

        int --> bigint
char(1) --> varchar(max)
varchar(30) --> varchar(max)

知道如何防止这种情况发生吗?数据类型的切换导致下游例程出现问题。

   df = pd.read_excel(schedule_file,sheet_name='Schedule')
params = urllib.parse.quote_plus(r'DRIVER={SQL Server};SERVER=<<IP>>;DATABASE=<<DB>>;UID=<<UDI>>;PWD=<<PWD>>')
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine = create_engine(conn_str)

table_name='REPORT_SCHEDULE'
df.to_sql(name=table_name,con=engine, if_exists='replace',index=False)

TIA

最佳答案

考虑使用pandas.DataFrame.to_sqldtype参数你在哪里传递 SQLAlchemy types 的字典到命名列:

import sqlalchemy 
...
data.to_sql(name=table_name, con=engine, if_exists='replace', index=False,
dtype={'name_of_datefld': sqlalchemy.types.DateTime(),
'name_of_intfld': sqlalchemy.types.INTEGER(),
'name_of_strfld': sqlalchemy.types.VARCHAR(length=30),
'name_of_floatfld': sqlalchemy.types.Float(precision=3, asdecimal=True),
'name_of_booleanfld': sqlalchemy.types.Boolean}

关于python - Pandas to_sql 更改数据库表中的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294611/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com