Найти - Пользователи
Полная версия: row sql
Начало » Django » row sql
1
Dr.Livsi
Добрый день!
Есть задача: в бд создается временная таблица для обрабтки:
tblname="tmp_tbl_%s_%s" % (userid, flname) # таблица вида: tmp_tbl_1_889003198403_01112012
cur=connection.cursor()
cur.execute('create table %s (code integer, name varchar(255), \
producer varchar(255));', [tblname])
При создании выдает ошибку:
syntax error at or near “E'tmp_tbl_1_889003198403_01112012'”
LINE 1: create table E'tmp_tbl_1_889003198403_01112012' (code intege…
Проблема в том, что вместо tmp_tbl_1_889003198403_01112012 в запрос ставится “E'tmp_tbl_1_889003198403_01112012'”.
Вопрос: чем это может быть вызвано и как это исправить?
slav0nic
Ты же как параметр SQL-запроса передаёшь, оно и экранирует.
В плане безопасности наверно можешь quote_name (https://github.com/django/django/blob/master/django/db/backends/postgresql_psycopg2/operations.py#L71-74) заюзать ну и формировать запрос банальным форматированием строк
Dr.Livsi
гмм, так и понял
В принципе, экранирование нужно при извлечении данных из ячейки таблицы. Если я обрабатываю таблицу select-ом (на основе этой таблицы и существующих моделей будет строиться запрос, объединяющий join-ом поля из нескольких таблиц) - по идее можно не бояться, что в ячейках будет записано нечто вроде “delete * from tablename” - ведь конкретная ячейка браться не будет. Так?
slav0nic
глянь я редактировал пост выше, бояться стоит, юзай quote_name, в джанге в бекенде им везде оборачивают имена таблиц
Dr.Livsi
Не, имя таблицы формируется у меня на сервере. Юзер не может воздействовать на него. Фишка в данных, которые закачиваются в таблицу.
Эти данные - отправляет пользователь. И, теоретически, может набросать чего только вздумает.
Dr.Livsi
slav0nic
В плане безопасности наверно можешь quote_name (https://github.com/django/django/blob/master/django/db/backends/postgresql_psycopg2/operations.py#L71-74) заюзать ну и формировать запрос банальным форматированием строк
Хорошо бы, конечно, глянуть. Но доступ сильно ограничен. Придется ждать вечера.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB