2015-12-14 6 views
1

Я следующий PostgreSQL запрос
Python удалить одиночные кавычки из словаря

data = {'token':"123",'kart_user':"tablename"} 
select_stmt = "SELECT * FROM %(kart_user)s WHERE token = %(token)s" 
self.cur.execute(select_stmt, data) 
result = self.cur.fetchone() 

В запросе на выборку %(kart_user)s будет представлять в виде отдельных цитат
Мой вопрос, как я могу удалить кавычки из тот же запрос?.

ответ

3

Весь смысл использовать параметры SQL для предотвращения интерпретации данных как объектов или синтаксиса SQL. Вы не можете использовать параметры SQL для имен таблиц; вы можете использовать только SQL-параметры для данных.

Вам нужно будет интерполировать имена таблиц отдельно. Это означает, что вы рискуете открыть свой код для инъекций SQL; Я бы проверил имя таблицы на список известных имен таблиц, если это было получено из пользовательского ввода.

assert data['kart_user'] in known_tables 
select_stmt = "SELECT * FROM {} WHERE token = %(token)s".format(data['kart_user']) 
self.cur.execute(select_stmt, data) 
+0

работал заблаговременно): –

Смежные вопросы