Py学习  »  Python

将在python中创建的pandas数据框插入到sql server中

Chris • 5 年前 • 1607 次点击  

如前所述,我在python中创建了一个数据集合(40k行,5列),希望将其插入到sql server表中。

通常,在sql中 'select * into myTable from dataTable' 调用以执行插入操作,但位于pandas数据帧中的数据显然会使此复杂化。

我并不正式反对使用sqlalchemy(尽管我更希望避免再次下载和安装),但我更希望在python中以本机方式进行,并使用pyodbc连接到ssms。

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40887
 
1607 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Aaron Gord Thompson
Reply   •   1 楼
Aaron Gord Thompson    5 年前

如图所示 this answer 我们可以转换名为 df 通过执行 list(df.itertuples(index=False, name=None) 所以我们可以把它传给 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()

这是“本机的”,但如果数据帧包含pyodbc无法识别的pandas数据类型(pyodbc期望python类型作为参数值),则可能会导致错误。使用sqlalchemy和pandas可能更好 to_sql 方法。