Как добавить пользовательское имя столбца в запросе обновления sqlalchemy? - PullRequest
0 голосов
/ 11 июля 2019

У меня следующий вопрос:

Я использую sqlalchemy в своем методе python следующим образом:

def update_icao_airport_id(self, airport_sys_id, project_sys_id, custom_column, value):
        """
        Updates Airport icao_airport_id value.
        :param airport_sys_id: airport_sys_id value you want to change
        :param project_sys_id: project_sys_id which is associated with Airport
        :param value: icao_airport_id new value
        :return: number of rows affected
        """
        query = AIRPORT.update(). \
            where(AIRPORT.c.airport_sys_id == airport_sys_id). \
            where(AIRPORT.c.project_sys_id == project_sys_id). \
            values(custom_column=value)
        result = self.execute_query(query)
        return result

Я хочу иметь возможность заменить 'custom_column' параметром, переданным в методе. Для меня нет способа работать с именем столбца, он работает только для значений после '=' или '==', штраф за airport_sys_id, project_sys_id и value.

Например, я хочу передать свой метод (1, 2, name_column, cat) и получить следующее:

query = AIRPORT.update(). \
            where(AIRPORT.c.airport_sys_id == 1). \
            where(AIRPORT.c.project_sys_id == 2). \
            values(name_column=cat)

Я искал все, что мог, но безуспешно. Я был бы чрезвычайно благодарен за вашу поддержку. Привет.

1 Ответ

0 голосов
/ 12 июля 2019

Для моего примера есть рабочее решение:

Мы можем использовать словарь:

.values({custom_column: value})

И тогда я могу использовать его в своем запросе так:

update_values = {custom_column: value}

query = AIRPORT.update(). \
        where(AIRPORT.c.airport_sys_id == airport_sys_id). \
        where(AIRPORT.c.project_sys_id == project_sys_id). \
        values(update_values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...