私たちは、WSGIでPythonを使用するWebアプリケーションに対してSQLクエリフロントエンドをSQLAlchemy(ORMではなくコア)で有効にしてPostgreSQLデータベースをクエリしようとしています。クエリの構築を支援するためにいくつかのデータレイヤー関数が設定されており、現在、このタイプのクエリを可能にする何かを設定しようとしています。
select id from <table_name> where ... limit ...
フロントエンドには、ユーザーがwhere句とlimit句を入力できるテキストボックスがあり、フロントエンドからデータを柔軟かつ動的にクエリできます。つまり、アドホッククエリを有効にします。ですから、私たちが今直接目にしているのは、次のことだけです。
select id from <table_name>
そして、ユーザーは次のように入力します。
where date > <some_date>
where location is not null limit 10 order by location desc
同じバックエンド関数を使用します。select、column、tableはデータレイヤーによって管理される必要があります(つまり、それらが何であるかを知っているので、ユーザーはそれを知る必要はありません)。where
ただし、SQLAlchemyで句と句の両方を自動的に解析する方法を私は知りませんlimit
。現在あるのは、テーブル名とid列の名前を返し、それを使用してテキストクエリを作成し、それをtext()
呼び出しへの入力としてSQLAlchemyに渡すことができる関数です。
SQLAlchemyまたは他のライブラリでこれを行う方法はありますか?または、フロントエンドからこの機能を許可しながらSQLを解析することを含まない、私が知っておくべきより良いパターンはありますか?
どうもありがとう!すべての提案は大歓迎です。