我有一个简单的功能
def DatabaseDoQuery(sql, records = pandas.DataFrame()):
conn = ceODBC.connect("DRIVER={SQL Server};SERVER=temp;Trusted_connection=yes")
cursor = conn.cursor()
if ('insert' in sql.lower()) and (~records.empty):
tuples = [tuple(x) for x in records.values]
cursor.executemany(sql,tuples)
conn.commit()
else:
cursor.execute(sql)
conn.commit()
conn.close()
当我首先调用此函数删除表中的记录然后将记录插入到同一个表中时,我收到此消息:
DatabaseError:无法获取诊断消息。
你能帮忙吗?
答案 0 :(得分:0)
正如AlxM所述,当诊断消息太大时会发生此错误。这有时是由于大量记录上的主键违规,但也可能是由数据转换错误引起的。尝试使用较小的数据块进行操作,您将能够收到有用的错误消息。
答案 1 :(得分:-1)
尽管这个问题已经有一年了,我无法说明出错的确切原因,但我想分享我对此错误的了解,因为那里有&# 39;几乎没有在其他地方讨论它。
"无法获得诊断信息"诊断消息过大时始终显示。例如。如果您尝试在20,000行上执行executemany,并且每个行都发生主键冲突,则可能会出现此错误。
我的建议是尝试使用较小的数据子集进行相同的操作。这可以帮助您收到有用的诊断信息。