在执行普通 SQL 查询时,Python
我已经习惯了总是使用参数替换来编程特定于 SQL 的东西,如下所示:
# Never do this -- insecure!
symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
# Do this instead
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
在psycopg2
文档中,他们甚至写道:
从不、从不、从不使用 Python 字符串连接 (+) 或字符串参数插值 (%) 将变量传递给 SQL 查询字符串。甚至在枪口下也没有。
现在我必须将数据从R
. 我尝试使用dbSendQuery
仅接受两个参数的函数来执行此操作:连接处理程序和查询本身。但是我怎样才能提供替换的参数呢?!
谷歌搜索我发现(令人惊讶!)在 R 社区中,人们总是建议使用构建 SQL 查询paste
,然后将其提供给dbSendQuery
. 但是安全和优雅呢?似乎没有人在乎...我个人不明白这一点。