sql-server - Python Turbodbc executemanycolumns 错误:无法将 Python 实例转换为 C++ 类型(在调试模式下编译以获取详细信息)
问题描述
尝试将 executemanycolumns 与 SQL Server 一起使用时,我收到此错误:“无法将 Python 实例转换为 C++ 类型(在调试模式下编译以获取详细信息)”
我知道 Turbodbc 不喜欢 numpy 空值(NaN 或 NaT),所以要删除这些我使用:
df= df.where((pd.notnull(df)), 无)
然而,在运行这个之后,我得到一个错误,说一列不连续。这些总是 int64 数据类型的列。为了解决这个问题,我使用 arr.flags['C_CONTIGUOUS'] 检查每个数组,如果 False 则使用 np.ascontiguousarray(arr)。然后我再次收到“无法将 Python 实例转换为 C++ 类型(在调试模式下编译以获取详细信息)”错误。
我的数据框不包含 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
我希望这会有所帮助,并且其他人可以为您提供更全面的解释!
推荐阅读
- python - Python:按列表切片数据框会返回比预期更长的列表
- javascript - 如何在 Angular 中将 ngStyle 设置为默认值
- android - 当内存清除时,viewpager 中的片段不会被破坏
- content-management-system - 如何在 Craft CMS 中建立新频道?
- python - 如何进行远程数据访问(来自股票市场)并将它们组合成一个数据框?
- python - 在 TensorFlow 中设计一个表示网络的类
- php - 通过邮件功能发送的电子邮件未发送
- sql - 带有 INSERT 语句的外部应用
- ios - 如何向下转换 UIViewController Swift
- flask - Flask-Migrate `db upgrade` 因“关系不存在”而失败