2015-12-14 127 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() 

在SELECT查询%(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

工作感谢您提前): –