Oracle 커서를 사용하여 SQL Server에 삽입 할 때 큰 수의 Pyodbc 삽입이 int에서 big으로 변환되지 않음

진주

다음과 같이 Oracle 커서를 사용하여 SQL Server에 삽입하여 executemany를 수행하려고합니다.

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

다음 오류와 함께 실패합니다.OverflowError: int too big to convert

나는 그것을 큰 숫자 (NUMBER (25)) 인 id 열로 진단했다.

다음을 사용하여 재현 할 수 있습니다.

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

그러나 이것은 작동합니다.

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

이 문제를 해결하는 방법이 있습니까? 아니면 커서를 반복하고 수동으로 삽입해야합니까? 이것은 pyodbc의 빠른 실행과 문자를 처리해야하는 것에 비해 느릴 것입니다.

고드 톰슨

귀하의 문제를 재현하고 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)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관