2016-08-10 6 views
1

tablenameを生SQLに補間しようとしていますが、SQLクエリが失敗するように間違って書式設定された文字列を補間しています。Django raw sql形式tablename

from django.db import connection 
cursor = connection.cursor() 
cursor.execute("SELECT * from %s;", ['product']) 

例外::私は、SQLクエリproperylyに文字列を補間する適切な方法を見つけることができません

django.db.utils.ProgrammingError: syntax error at or near "'product'" 
LINE 1: SELECT * from 'product'; 

答えて

4

あなたは、パラメータの引数としてテーブルや列の名前を渡すことはできません。 SQL-injection攻撃の可能性を意識されている間

qry = "SELECT * from %s;" % 'product' 
cursor.execute(qry) 

:代わりのような何かを行います。

+1

ああ、ちょうど記録のために、クエリは '%sから%sを選択しました。だから、2つの段階で補間する必要があります: 'qry%( '%s'、 'product')' – PepperoniPizza

+0

ああ。うん、あなたは 'select *' – bernie