2016-06-28 3 views
0

SQLAlchemy의, 나는 데이터 마이그레이션에 대한 odo를 사용하고 있지만,이 오류를 건너 왔어요 :'범위를 벗어난 정수'를 얻기 오류 그래서

sqlalchemy.exc.DataError: (psycopg2.DataError) integer out of range 

소스와 대상 테이블 모두 같은 스키마를 가지고 있지만 SQL 문에 백엔드에서 실행되는 정수 값은 .0을가집니다. 소스 테이블의 정수 3434.0로 표시됩니다 같이 :

[SQL: INSERT INTO table2 (col1, col2,col3) VALUES (%(col1)s, %(col2)s, %(col3)s] 
[parameters: ({'col2' : val2', 'col3' : val3', 'col1' : val1})] 

더 많은 정보가 필요한 경우 알려 주시기 바랍니다.

+0

이 때문에'NaN' 값이 될 수 있습니다 매개 변수 사전의 정수 열에 대해. 새로운 질문이 추가되었습니다 : http://stackoverflow.com/questions/38074487/copy-empty-string-to-integer-column-postgres – delalli

답변

0

는 SQL 문자열은 다음과 같아야합니다

INSERT INTO table2 (col1, col2, col3) VALUES (
    %(col1)s::numeric::int, 
    %(col2)s::numeric::int, 
    %(col3)s::numeric::int 
) 

을 목표 컬럼이 널 (NULL)이 아니고 소스 값은 다음 None 수를 병합 할 수있는 경우 :

coalesce(%(col1)s::numeric::int, 0), 
+0

SQL 문자열은 오류가 발생했을 때 odo가 출력으로 표시하는 문자열입니다. 나는 그것을 바꿀 수 없다. – delalli

+0

SQL 문자열을 변경할 수 없으므로 어떻게해야합니까? – delalli

+0

@delalli 파이썬/오도 코드 표시 –

관련 문제