将在Python中创建的panda数据帧插入SQL Server



如前所述,我在Python中创建了一个数据集合(40k行,5列(,我想将其插入SQL Server表中。

通常,在SQL中,我会调用'select * into myTable from dataTable'来进行插入,但pandas数据帧中的数据显然会使这变得复杂。

我并不正式反对使用SQLAlchemy(尽管我更喜欢避免另一次下载和安装(,但我更喜欢在Python中原生地这样做,并且正在使用pyodbc连接到SSMS。

有没有一种简单的方法可以避免循环(即逐行插入(?

如此答案所示,我们可以通过执行list(df.itertuples(index=False, name=None)将名为df的DataFrame转换为元组列表,这样我们就可以将其传递给executemany,而无需(显式(循环每行。

crsr = cnxn.cursor()
crsr.fast_executemany = True
crsr.executemany(
"INSERT INTO #tablename (col1, col2) VALUES (?, ?)",
list(df.itertuples(index=False, name=None))
)
crsr.commit()

这是"原生"的,但如果DataFrame包含pyodbc无法识别的panda数据类型(它需要Python类型作为参数值(,则可能会导致错误。使用SQLAlchemy和Panda的to_sql方法可能会更好。

相关内容

  • 没有找到相关文章

最新更新