1

次のコードがあります。

def add_record(self,values):
    self.sql.execute("INSERT INTO TEST VALUES (?,?)" % values)

ユーザー定義のテーブルに対応するように調整したいと思います。

def add_record(self,tablename,values):
        self.sql.execute("INSERT INTO TEST VALUES (?,?)" % values)

ただし、正しいフォーマットについてはよくわかりません。誰か助けてくれませんか?

4

1 に答える 1

2

任意のクエリで文字列補間を使用すると、SQL インジェクション攻撃のリスクが生じることに注意してください。

悪意のあるコードが使用されないことが確実な場合は、次の 2 段階のプロセスを使用できます。
1. テーブル名の文字列補間。
2. クエリ パラメータを 2 番目の引数として.execute()

(テーブル名や列名のパラメーター化はサポートされていません。)

def add_record(self, tablename, values):
    the_query = "INSERT INTO {:s} VALUES (?,?);".format(tablename)
    self.sql.execute(the_query, values)
于 2012-06-29T18:09:12.327 に答える