0

SQLAlchemy を使用してデータベースにアクセスしています。一連の公開キーと秘密キーを使用してテーブルをフィルター処理しようとすると、「int」オブジェクトに属性「date」がないという属性エラーが表示されます。

場合によっては、結果を 1 回フィルター処理することができ、フィルターが再度呼び出されると、クラッシュして同じエラーが発生します。これは 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 が結果オブジェクトを設定しようとすると、例外がスローされます。1 つの列が型として修飾されてDateいますが、Oracle の結果セットでは代わりに整数が返されます。

ライブラリは通常、 Oracle が提供するネイティブの DATE 列の値を Pythonオブジェクトcx_Oracleに変換します。datetime.datetimeただし、これはここにあるすべての行で発生しているわけではありません。

オブジェクトに変換されていない列を持つ行を絞り込む必要がありdatetimeます。これらの行を含めたり除外したりするフィルターのパターンを見つけて絞り込み、別のクライアントで手動でデータベースの行を検査できるようにします。

于 2013-08-13T10:04:12.570 に答える