MariaDBは、を使用できます。これは、データがまばらに埋め込まれたデータセットで、COLUMN_ADD()
およびCOLUMN_GET()
の関数でアクセスされます。SQLAlchemyでMariaDBのCOLUMN_GET()を使用する
しかし、SQLAlchemyで動的列を使用する方法はありません。我々は試してみました:
次のSQLを生成from sqlalchemy.sql import func
...
query = session.query(
func.COLUMN_GET(DynamicInfo.dyn_col, 256)
).filter(
DynamicInfo.index_id == index
)
:
SELECT COLUMN_GET(dyn_info.dyn_col, %(COLUMN_GET_2)s) AS `COLUMN_GET_1`
FROM dyn_info
WHERE dyn_info.index_id = %(index_1)s
問題は、これは無効な構文がCOLUMN_GET()
のためであるということです。タイプと値を含める必要があります。 COLUMN_GET(dyn_info.dyn_col, 256 AS INT)
を取得する方法を理解することはできません(SQL錬金術を最初に使用する利点のほとんどを無効にします)。
我々はまた、我々はその形式をコピーして、カスタムコンパレータが定義されている可能性があることを期待して、列の処理方法でSQLAlchemyのソースコードの多くを見てきました。この問題は、呼び出されるときに動的な列にindexパラメータが必要であることにあります。これは、COLUMN_GET()関数をはるかに簡単できれいな方法で定義することになります。
私は実際にこれをやってしまった!私たちの目的のために、独自の 'Function'を作成するのが最もきれいでしたが、唯一の違いは' ClauseElement'の特別な処理があることです。しかし、答えをありがとう。 – Kittsil