我尝试使用ceODBC将pandas数据帧/表插入到SQL Server数据库中。 我首先从数据帧创建一个元组列表,然后使用executemany()方法,该方法对列表中的每个元组执行INSERT命令。
data = [ tuple(x) for x in table.values ]
cursor.executemany( SQLCommand, data )
Sql命令看起来像这样但有更多变量 -
"INSERT INTO table VALUES (?, ?, ?)"
我收到了Python OverflowError。 数据帧中的值大于2 ^ 31-1,C long类型可以存储的最大正整数。
>>> junecps.max().max() > 2**31-1
True
但是我使用64位python 3.4的64位机器,所以我很困惑为什么我会触发这个错误。我的数据框中没有任何值高于此sys.maxsize。
>>> 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