2012-06-13 3 views
2

pyodbc를 사용하여 SQL Server에서 데이터를 쿼리 한 다음 pandas에서 작업을 수행합니다. 몇 가지 계산 된 숫자 열은 decimal.Decimal 및 float로 반환되는 것으로 나타났습니다. 이는 두 가지 유형의 결과에 대해 산술 피연산자를 수행 할 수 없으므로 문제가됩니다.숫자에 대한 Pyodbc 기본 유형

문제를 해결하는 가장 좋은 방법은 무엇입니까? 10 진수를 강제 변환하는 pydobc 설정이 있습니까? 부동 소수점 숫자는? 나는 혼자 회심을해야합니까? 다른 것?

답변

2

Here는 ODBC와 파이썬 데이터 유형 사이의 변환을 자세히 (파이썬 2.x 및 3.x 머리글 Results 아래) 변환 테이블입니다 SQL 서버에서 계산 된 열을 캐스팅.

CAST @ Aaron의 대답에서 언급 한 결과이거나 데이터베이스의 원본 데이터 형식을 변경하십시오.

자세한 정보 (특정 열 데이터 유형, 샘플 데이터, 데이터베이스 변경의 유연성)를 통해 어떤 옵션이 가장 적합한 지 결정할 수있었습니다.

+1

데이터베이스 스키마는 조금 혼란 스럽습니다. 십진수, 숫자 및 부동 소수점은 모두 해독 할 수있는 많은 운율없이 상호 교환 적으로 사용됩니다. 파이썬 측면에서 부동 소수점을 캐스팅했다. 저에게있어서 longterm 솔루션은 소수점과 숫자를 부 풀릴 수있는 옵션이있는 pyodbc와 비즈니스 사이에있는 중간 라이브러리를 수정하려고합니다 (그리고 다른 유형도 가능할 것입니다). – Roger

1

쿼리를 작성한 경우 CAST을 사용하여 데이터 형식을 제어하는 ​​것이 좋습니다. 난 항상 명시 적으로

SELECT CAST(ColumnA/ColumnB AS FLOAT) AS 'FieldA' FROM Table 
+0

나는 그렇게 생각했지만 SQL 쿼리는 이미 클라이언트 라이브러리를 수용 할 수있는 코드를 추가 할 필요가 없으므로 추악합니다. 실제로 클라이언트에서 쿼리 당 한 번 수행하는 솔루션이 있어야합니다. 아마도이 작업을 수행하는 execute()를 래핑해야 할 것입니다. – Roger