SQLAlchemy (python) でフィルター クエリを実行しようとしていますが、列名で大文字と小文字が区別されるという問題が発生しています。
モデル クラスは、次のようにスキーマから自動生成されます。
Base = declarative_base()
engine = create_engine('postgresql://user:pass@localhost:5432/database')
metadata = MetaData(bind=engine)
class MyTable(Base):
__table__ = Table('my_table', metadata, autoload=True, quote=True)
そして、これがフィルタークエリの実行方法です。
val = 1
result = session.query(MyTable).filter("myCaseSensitiveAttribute=:myCaseSensitiveAttribute").params(myCaseSensitiveAttribute=val).all()
これにより、次のエラーが発生します。
sqlalchemy.exc.ProgrammingError: (ProgrammingError) 列 "mycasesensitiveattribute" が存在しません 3 行目: WHERE myCaseSensitiveAttribute=1
他のすべては、大文字と小文字を区別して正常に機能します。問題を引き起こしているのはフィルターだけです。モデルクラスの各属性を明示的に定義せずに列名を強制的に引用する方法はありますか (この場合は実用的ではありません)、または変数値に基づいて結果セットをフィルタリングする他の作業方法はありますか?
御時間ありがとうございます!