SQLAlchemy CORE: решение, похожее на bindparam (), но для аргумента type_ типа fun c .cast () - PullRequest
0 голосов
/ 06 апреля 2020

В SQLAlchemy CORE есть ли способ использовать bindparam () для позднего связывания параметра type_ функции fun c .cast вместо столбца?

Я написал функцию, возвращающую "запеченный" запрос ", который извлекает настройки, хранящиеся в столбце XML. Я хочу, чтобы извлеченное значение было приведено к типу в зависимости от заданного c извлеченного значения (это зависит от параметра, связанного с xpath).

Может быть, необходимо @compile что-то, чтобы позволить bindparam () вернуть тип вместо элемента столбца ...

    def bake_extract_settings_query(self):
        return (
            select([
                func.cast(
                    func.cast(
                        func.xpath(
                            func.cast(
                                bindparam("xpath"),
                                Text),
                            func.cast(adm_preference.c.data, XMLType),
                            type_=ARRAY(XMLType))[1],
                        Text),
                    bindparam("output_type")  # <---- the problem
                ).label("preference")
            ])
            .where(adm_preference.c.code == "_mainpref_")
            .limit(1))
...