使用Oracle游标插入Sql Server时,大数值的Pyodbc插入无法转换int到big

2024-09-30 08:34:50 发布

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

我正在尝试使用Oracle游标在SQL Server中执行插入操作,如下所示:

sqlservercursor.executemany("INSERT INTO tablename (col1,col2...) VALUES (?,?…)",oraclecursor)

此操作失败,错误为:OverflowError: int too big to convert

我已将其诊断为id列,这些列是大数字(数字(25))

我可以使用以下方法复制此内容:

sqlservercursor.execute('INSERT INTO tablename (Id) VALUES (?)',(90100111000002885322904,))
                

然而,这是可行的:

sqlservercursor.execute('INSERT INTO tablename (Id) VALUES (90100111000002885322904)')

有没有办法解决这个问题,或者我必须通过游标循环并手动插入?与pyodbc的快速执行以及必须处理字符相比,这将是缓慢的


Tags: idexecutesqlserver数字col2col1oracle
1条回答
网友
1楼 · 发布于 2024-09-30 08:34:50

我能够复制您的问题并使用fast_executemany解决它:

cnxn = pyodbc.connect("DSN=mssqlLocal64")
crsr = cnxn.cursor()
crsr.execute("CREATE TABLE ##tablename (Id decimal(25,0))")
data = [(90100111000002885322904,)]  # list of tuple(s)
sql = "INSERT INTO ##tablename (Id) VALUES (?)"
crsr.fast_executemany = True
crsr.executemany(sql, data)

相关问题 更多 >

    热门问题