溢出错误:Python int太大,无法转换为C long executemany sql ins

2024-10-04 05:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用ceODBC将pandas数据帧/表插入到sqlserver数据库中。 我首先从dataframe创建一个元组列表,然后使用executemany()方法对列表中的每个元组执行INSERT命令。在

data = [ tuple(x) for x in table.values ]
cursor.executemany( SQLCommand, data )

Sql命令看起来像这样,但是有更多的变量--

^{pr2}$

我得到了一个Python溢出错误。 数据帧中的值大于2^31-1,这是C long类型可以存储的最大正整数。在

>>> junecps.max().max() > 2**31-1
True

但是我使用的是64位机器和64位Python3.4,所以我很困惑为什么我会触发这个错误。我的数据帧中没有一个值高于此值系统最大大小. 在

>>> sys.maxsize
9223372036854775807
>>> junecps.max().max() > 2**63-1
False

这是回溯。在

Writing SQL 'Insert' Command
INSERTing 1494250 rows
Traceback (most recent call last):
  File "-----", line 93, in <module>
    pysql.uploadTable( connection, junecps, 'CPSProcessedJune' )
  File "-----", line 131, in uploadTable
    cursor.executemany( SQLCommand, data )
OverflowError: Python int too large to convert to C long

Tags: 数据in命令列表data错误linecursor