0

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

1 回答 1

1

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

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

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

于 2013-08-13T10:04:12.570 回答