Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2024 19:19:48

Begimot
Зарегистрирован: 2023-11-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно параметрировать SQL-запрос типа INSERT

Дорогие друзья!
Прошу подсказку.

Использую библиотеку psycopg2 для формирования запросов такого вот плана, как показано ниже.
Делаю контактацию и, естественно, получаю уязвимость

          insert_sql_str = (f"INSERT INTO {data_tab_name} "
                                  f"(tag_name, date_of_data, {field_str}, write_date) "
                                  f"VALUES ('{tag_name}', '{shift_sys_time_str}', {val_str}, current_timestamp)")
         cursor.execute(insert_sql_str)

Хочу переделать на запрос с параметрами. ЧИтал-читал, пробовал, но ничего не вышло.
Подскажите, какую схему параметрирования запроса тут лучше применить?
И вообще, можно ли в качестве параметра указывать наименование таблицы, наименования поля?

Отредактировано Begimot (Март 11, 2024 19:20:31)

Офлайн

#2 Март 11, 2024 20:07:57

Begimot
Зарегистрирован: 2023-11-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно параметрировать SQL-запрос типа INSERT

Кое что уже нашел сам, но не хватает совсем чуть-чуть для полного счастья.

Я научился подставлять наименование ТАБЛИЦЫ и все параметры.
Осталось наименование ПОЛЯ (оно там одно).
Кто знает, как в эту конструкцию закинуть и наименование поля?
Спасибо!

                     cursor.execute(
                            sql.SQL(
                                "insert into {table} (tag_name, date_of_data, " + field_str + ", write_date)"
                                "values (%s, %s, %s, current_timestamp)"
                                    )
                            .format(table=sql.Identifier(data_tab_name)), [tag_name, shift_sys_time_str, val_str]
                    )

Офлайн

#3 Март 11, 2024 20:18:40

Begimot
Зарегистрирован: 2023-11-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно параметрировать SQL-запрос типа INSERT

Нашел! Спасибо, что были со мной в трудную минуту!

                     cursor.execute(
                            sql.SQL(
                                "insert into {table} (tag_name, date_of_data, {field}, write_date)"
                                "values (%s, %s, %s, current_timestamp)"
                                    )
                            .format(table=sql.Identifier(data_tab_name), field=sql.Identifier(field_str)),
                            [tag_name, shift_sys_time_str, val_str]
                    )

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version