使用 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())
我有很多记录要插入 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())