次のように、単純なSQLクエリを実行するときに、常にPython
パラメーター置換を使用することに慣れています。
# 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 クエリ文字列に渡すことは絶対にしないでください。銃を突きつけられても。
から SQLite データベースにデータを保存する必要がありますR
。dbSendQuery
私はこれを、接続ハンドラとクエリ自体の 2 つの引数のみを受け入れる関数で実行しようとしました。しかし、どうすれば置換用のパラメーターを提供できますか?!
グーグルで調べてみると、(驚くべきことに!) R コミュニティでは、人々は常に を使用して SQL クエリを作成しpaste
、それを にフィードすることを提案していることがわかりましたdbSendQuery
。しかし、安全性とエレガンスはどうでしょうか? 誰も気にしていないようです... 私は個人的にこれを理解していません。