使用 pandas 数据帧和 pyodbc 的 fast_executemany() 将数据插入 sql 服务器时出现 'bool object not callable' 错误

Getting 'bool object not callable' error when inserting data into sql server using pandas dataframe and pyodbc's fast_executemany()

我有很多记录要插入 sql 服务器。我正在使用 pyodbc 和 cursor.fast_executemany() 来实现这一点。常规 cursor.execute() 插入记录太慢。

我正在关注这篇文章作为参考:https://towardsdatascience.com/how-i-made-inserts-into-sql-server-100x-faster-with-pyodbc-5a0b5afdba5

我正在使用的示例代码:

query = "SELECT * FROM dbo.my_table"

df = pd.read_sql(query, conn)

my_insert_statement = f"INSERT INTO myschema.new_table(colA, colB, colC, colD, colE) values(?,?,?,?,?)"
cursor = conn.cursor()
cursor.fast_executemany = True
cursor.fast_executemany(my_insert_statement,df.values.tolist())
conn.commit()
cursor.close()
conn.close()

但是我一直收到以下错误,尽管我没有任何 boolean 列。

'bool' object is not callable

我不知道如何克服这个错误,我真的需要批量快速地将记录插入我的数据库 table。

关于为什么会出现这个错误以及如何解决这个问题有什么想法吗?

以下代码段中的第二行一定是错误的。您将 fast_executemany 设置为 True 然后尝试用 fast_executemany().

调用它
cursor.fast_executemany = True
cursor.fast_executemany(my_insert_statement,df.values.tolist())

我查看了您的指南,您必须将代码段中的第二行替换为:

cursor.executemany(my_insert_statement,df.values.tolist())