sql-server - Python Turbodbc executemanycolumns 错误 : Unable to cast Python instance to C++ type (compile in debug mode for details)

标签 sql-server python-3.x pandas numpy

尝试在 SQL Server 中使用 executemanycolumns 时,出现此错误:“无法将 Python 实例转换为 C++ 类型(在 Debug模式下编译以获取详细信息)


我知道 Turbodbc 不喜欢 numpy 空值(NaN 或 NaT),所以为了删除这些我使用:

df= df.where((pd.notnull(df)), None)

然而,在运行这个之后,我收到一个错误,说一列不连续。这些总是 int64 数据类型的列。为了解决这个问题,我使用 arr.flags['C_CONTIGUOUS'] 检查每个数组,如果为 False,则使用 np.ascontiguousarray(arr)。然后我收到“无法将 Python 实例转换为 C++ 类型(在 Debug模式下编译以获取详细信息)”
"又出错了。

我的数据框不包含 NaN 或 NaT。关于导致此错误的原因有任何想法吗?谢谢你的帮助!

最佳答案

所以这个答案绝对不是为什么会发生这个错误的完整解释,而是基于我自己解决这个问题时的发现。

首先,我需要引用这篇很棒的文章,它为我提供了构建 SQL 导出的功能 https://medium.com/@erickfis/etl-process-with-turbodbc-1d19ed71510e

在本文的末尾有一些回复和问题,其中一些与您的问题有关。其中有一个响应,说他们将数据帧写入 csv,然后读取该 csv,然后运行 ​​Turbodbc 代码。

我不确定为什么这可能会消除您看到的错误 - 并且为了避免违反关于答案的 SO 规则,我不会放弃我对正在发生的事情的猜测,因为它可能没有帮助!

我决定遵循这个建议,因为我不知所措,幸运的是它在大约 17 秒内工作并导出了我的整个数据框(20975 行和 100 列)!

我在使用 Turbodbc 时看到其他错误时所做的其他一些事情如下(可能与此特定问题没有直接关系,但可能有助于您进一步解决其他问题):

  - update numpy to most recent version
  - install dlib from whl file here https://pypi.org/simple/dlib/
  - install CMake using pip install 

我希望这会有所帮助,并且其他人可以为您提供有关正在发生的事情的更彻底的解释!

关于sql-server - Python Turbodbc executemanycolumns 错误 : Unable to cast Python instance to C++ type (compile in debug mode for details),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311776/

相关文章:

Python-Requests 如何从响应中捕获 html 代码的特定部分?

python - 在 python 3.3 列表中查找最小值

python - 对数据帧进行排序时,为什么在没有 NaN 值的情况下得到 "TypeError: unorderable types: str() < float()"?

python - 比较数据帧字典中的列

python - 按行随机连接数据帧

sql-server - 插入中保留的文档中 XML 节点的顺序?

sql - 使列唯一是否会强制创建索引?

python - 如何更改Python中条形图的顺序?

sql-server - 如何在 Pivot 中使用 TSQL STUFF?

sql - 编写 SQL 脚本但遇到问题