2013-08-13 3 views
0

SQLAlchemy를 사용하여 데이터베이스에 액세스하고 있습니다. 내가 공개 키와 개인 키를 사용하여 테이블을 필터링하려고하면 'int'객체에 'date'속성이 없다는 속성 오류가 발생합니다.SQLAlchemy는 정수를 반환합니다.

가끔 필터 결과를 한 번 필터링 할 수 있고 필터를 다시 호출하면 충돌이 발생하여 동일한 오류가 발생합니다. 이것은 SQLAlchemy 또는 PyDev의 문제입니까?

다음은 내 필터의 스 니펫입니다.

randomize_query(session('test').query(tableName).filter(tableName.field1 == criteria, tableName.field2 == 2).order_by(desc(tableName.field3))).first() 

전체 역 추적은

File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 2145, in first 
    ret = list(self[0:1]) 
    File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 2012, in __getitem__ 
    return list(res) 
    File "C:\Python27\lib\site-packages\sqlalchemy\orm\loading.py", line 72, in instances 
    rows = [process[0](row, None) for row in fetch] 
    File "C:\Python27\lib\site-packages\sqlalchemy\orm\loading.py", line 447, in _instance 
    populate_state(state, dict_, row, isnew, only_load_props) 
    File "C:\Python27\lib\site-packages\sqlalchemy\orm\loading.py", line 301, in populate_state 
    populator(state, dict_, row) 
    File "C:\Python27\lib\site-packages\sqlalchemy\orm\strategies.py", line 150, in fetch_col 
    dict_[key] = row[col] 
    File "C:\Python27\lib\site-packages\sqlalchemy\engine\result.py", line 89, in __getitem__ 
    return processor(self._row[index]) 
    File "C:\Python27\lib\site-packages\sqlalchemy\dialects\oracle\cx_oracle.py", line 250, in process 
    return value.date() 
AttributeError: 'int' object has no attribute 'date' 
+0

해당 테이블에 대한 SQLAlchemy 선언에서'tableName.field1' 및'tableName.field2' 열의 유형은 무엇입니까? –

+0

정수입니다. – Abhinav

+0

그리고 'field1'? ** full ** traceback을 제공해 주실 수 있습니까? –

답변

1

결과 세트가로드와 SQLAlchemy의이 결과 개체를 채우는 원하는 때 예외가 발생 다음과 같다. 하나의 열은 Date 유형으로 규정되지만 Oracle 결과 세트는 대신 정수를 제공합니다.

라이브러리는 일반적으로 Oracle에서 제공 한 원시 DATE 열 값을 Python datetime.datetime 오브젝트로 변환합니다. 그러나 이것은 의 경우 모두 행에 대해 발생하지 않습니다.

datetime 개체로 변환되지 않는 열이있는 행을 좁혀 야합니다. 이러한 행을 포함하거나 제외하는 필터에서 패턴을 찾아내어 다른 클라이언트에서 직접 데이터베이스 행을 검사 할 수 있도록 범위를 좁 힙니다.

+0

데이터베이스 모델링에 문제가있었습니다. 형식이 제대로 일치하지 않아 위의 오류가 발생했습니다. 고맙습니다; – Abhinav

관련 문제