我正在使用SQLAlchemy访问数据库。当我尝试使用一堆公钥和私钥过滤表时,我得到一个属性错误,说'int'对象没有属性'date'。
有时,我能够过滤一次结果,当再次调用过滤器时,它会崩溃,给我同样的错误。这是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 :(得分:1)
加载结果集并且SQLAlchemy想要填充结果对象时抛出异常。一列被限定为Date
类型,但Oracle结果集将为您提供整数。
cx_Oracle
库通常会将Oracle提供的本机DATE列值转换为Python datetime.datetime
对象。但是,所有您的行都不会发生这种情况。
您需要缩小具有未转换为datetime
对象的列的行或行。在过滤器中查找包含或排除这些行的模式并将其缩小,以便您可以在其他客户端中手动检查数据库行。