SQLite データベースで SQLAlchemy を使用するアプリケーションを作成しています。他の操作が期待どおりに機能するため、データベース、テーブル、およびマッピングが正しく構成されていると思います。関数にパラメーターとして指定された datetime.date() と一致する日付フィールドを持つすべてのオブジェクトを取得する関数を作成しようとしています。これが私の最初の試みです:
def get_objects_matching_date(session,my_date):
return session.query(Table).filter(Table.date_field == my_date).all()
Table
条件に一致するオブジェクトが含まれていることはわかっていますが、関数は何も返しません。
SAのドキュメントを読んで、sqlite にはネイティブ サポートdate
やdatetime
型がなく、文字列として格納されていることを知っています。ただし、SA は、(結果を返すとき) および (レコードを挿入するとき)date
またはdatetime
オブジェクトからの変換を処理することになっています。比較フィルターを実行するときにもこれを処理できるはずだと思います。私はいくつかの異なる SO スレッドを読み、 を使用between()
して一致するオブジェクトを除外することを検討しましたが、正確なものが探しているmy_date
場合は必要ないようです。==
オブジェクトの比較を確実に行うために using も調べまし.filter(cast(Table.date_field,DATE) == my_date)
たが、それもうまくいかなかったようです。
特にSQLiteデータベースで、SQLAlchemyが日付を処理する方法について明らかに何かが欠けています。Date
SQLAlchemy によって SQLite db に保存されたdatetime.date()
オブジェクトと、パラメータとして提供されたオブジェクトとの正確な一致を取得するにはどうすればよいですか? 助けてくれてありがとう。