首先让我说,这篇文章与本网站上的许多帖子有关,我只是为后代发布这篇文章,并帮助添加有关为什么会发生此特定错误的证据。
因此,我运行了一个脚本,该脚本将数据从sql拉取到数据帧,然后执行一些操作并将输出写回sql服务器。当我将executemany()
添加到我的sqlalchemy
脚本以使用 pandasto_sql
命令写入服务器时,我第一次开始遇到随机的"内核死亡"错误。我一辈子都想不通。
继续往前走,我开始在不使用executemany()
的情况下将大量信息写回服务器,并且收到错误,指出我在写入服务器时主键重复。我从历史上知道,从熊猫到 h2o 帧有一个已知问题,即 h2o 帧有时会在帧中创建重复记录。当它转换回熊猫时,您仍将拥有副本,当您将其写回服务器时,您仍将拥有副本。写回我的服务器的值之一是主键,因此不能有重复的条目并导致错误。
话虽如此。当我关闭executemany()
时,我收到主键中存在重复项并且操作停止的错误。当我打开executemany()
时,我收到"内核已死"的错误。
因此,有了这些证据,我建议内核已死亡错误是另一个包/实体中的一些错误,该错误未转换回内核并导致内核已死亡错误。
问题是:我们在这两个问题上处于什么位置?我看到的帖子是~11个月前的
另外,如果这里不允许这篇文章,我在哪里可以发布这样的信息,以帮助开发人员了解常见问题?
编辑:继续...
刚刚使用相同的脚本在 jupyter 中运行了测试。我收到了带有 executemany(( 的重复主键的相应错误。需要明确的是:在 spyder 中,我会收到"内核死亡"。
但是我也收到了此错误。
C:Anaconda3libsite-packagessqlalchemyenginebase.py in
_execute_context(self, dialect, constructor, statement, parameters, *args)
1169 parameters,
-> 1170 context)
1171 elif not parameters and context.no_parameters:
C:Anaconda3libsite-packagessqlalchemyenginedefault.py in
do_executemany(self, cursor, statement, parameters, context)
503 def do_executemany(self, cursor, statement, parameters,
context=None):
--> 504 cursor.executemany(statement, parameters)
505
我刚刚找到了一个新手解决方案。将所有项目文件复制到新目录,将Spyder设置为出厂默认设置,然后在新目录中创建一个新项目!死内核复活!
不过,在使用TensorFlow时,我遇到了类似的事情。我通过在脚本开头添加以下代码来修复它
import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
这可能与内核尝试多次导入模块而崩溃有关。