SQLAlchemy返回一个整数

时间:2013-08-13 08:37:36

标签: python eclipse sqlalchemy

我正在使用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'

1 个答案:

答案 0 :(得分:1)

加载结果集并且SQLAlchemy想要填充结果对象时抛出异常。一列被限定为Date类型,但Oracle结果集将为您提供整数。

cx_Oracle库通常会将Oracle提供的本机DATE列值转换为Python datetime.datetime对象。但是,所有您的行都不会发生这种情况。

您需要缩小具有未转换为datetime对象的列的行或行。在过滤器中查找包含或排除这些行的模式并将其缩小,以便您可以在其他客户端中手动检查数据库行。