2012-11-23 7 views
0

저는 python, sqlalchemy 및 pymssql을 사용하여 독점적 인 MSSQL 데이터베이스에 연결하고 있습니다. 데이터베이스를 편집 할 수 없으며 데이터베이스를 읽을 필요가 있습니다. 이제 데이터베이스에서 쿼리를 처음 실행할 때 내 프로그램에서이 메시지를 출력합니다.pymssql을 사용하여 십진수로 액세스

path/to/sqlalchemy/dialects/mssql/pymssql.py:50: SAWarning: Dialect mssql+pymssql does *not* support Decimal objects natively, and SQLAlchemy must convert from floating point - rounding errors and other issues may occur. Please consider storing Decimal numbers as strings or integers on this platform for lossless storage. 
    return sqltypes.Numeric.result_processor(self, dialect, type_) 

나는이 나에게 말하기 SQLAlchemy의 이해 그리고 내가 형 진수의 필드에서 데이터를 읽을 때이 float로 변환하는 과정에서 반올림됩니다 것을 의미합니다.

그래서 나는이 문제없이 MSSQL 데이터베이스에서 진수 데이터를 얻을 수있는 방법이 있나요 리눅스 시스템에서,이에 대한 두 가지 질문 ... 첫째

있나요?

두 번째 이유는 프로그램에서 예외가 발생하거나 충돌하는 대신이 메시지를 인쇄하는 이유는 무엇입니까? 이 작은 오류에 대처할 수 있다면 어떻게 메시지를 끊임없이 나에게 뱉어 낼 수 있습니까?

답변

2

예. pyodbc (free/OSS) 또는 mxodbc (상업용, 최신 mxodbc에서만 0.8에서 mxodbc 사용) 문법을 사용하면 DECIMAL 객체를 완전하게 전달하는 것으로 테스트되었습니다. pymssql은 현재 알려지지 않았습니다.이 DBAPI는 많은 재 작성/소유권 변경을 거쳤으며 그 상태는 공중에서 조금 올라갔습니다. 당신이 다시 소수 개체를 얻을, 그들은 단지 일반적인 부동 소수점 weirdnesses 대상이 될 것입니다 수 있기 때문에

또한, 경고는 (백 가지의 3.4559999999999 유형으로 오는 같은 3.456)입니다. 따라서 부분적으로 작동하는 기능을 차단하는 것보다 값을주의해야합니다.

+0

감사합니다. @zzzeek, ​​지연에 대해 사과드립니다. 필자는 이제 pyodbc에 문제가 있으며 가능한 빨리 그 문제를 게시 할 것입니다. –

관련 문제