我有一个连接到Azure SQL数据库的pydodbc游标,并安装了在Mac OS Sierra 10.12.6上运行的最新版本的FreeTDS:
cursor.execute("CREATE TABLE test(a INT, b INT)")
cursor.commit()
这可以,很好,然后我尝试
cursor.fast_executemany=True
cursor.execute("INSERT INTO test(a, b) VALUES(?,?)", [(1,2),(3,4),(5,6)])
这会导致分段错误,而我看到的唯一错误消息是segmentation fault: 11
如果我未设置cursor.fast_executemany=True
,则代码可以正常工作。
答案 0 :(得分:3)
在Xubuntu 16.04下,我能够使用FreeTDS 1.00.94和unixODBC 2.3.6重现您的“分段错误”问题。
fast_executemany = True
使用称为“参数数组”的ODBC功能,并非所有ODBC驱动程序都支持该功能。显然FreeTDS ODBC是不支持它的驱动程序之一。
如果您确实需要使用fast_executemany = True
,则可以使用Microsoft's ODBC Driver for SQL Server。它确实支持ODBC参数数组。