如图所示
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
方法。