19

Python の db-api を使用して、次の SQL ステートメントを組み立てようとしています。

SELECT x FROM myTable WHERE x LIKE 'BEGINNING_OF_STRING%';

ここで、BEGINNING_OF_STRING は、DB-API を介して安全に入力される Python 変数である必要があります。私は試した

beginningOfString = 'abc'

cursor.execute('SELECT x FROM myTable WHERE x LIKE '%s%', beginningOfString) 
cursor.execute('SELECT x FROM myTable WHERE x LIKE '%s%%', beginningOfString)

私はアイデアがありません。これを行う正しい方法は何ですか?

4

3 に答える 3

3

編集:

ブライアンとトーマスが指摘したように、これを行うためのはるかに優れた方法は、次を使用することです。

beginningOfString += '%'
cursor.execute("SELECT x FROM myTable WHERE x LIKE ?", (beginningOfString,) )

最初の方法では SQL インジェクション攻撃にさらされるためです。


歴史のために残されました:

試す:

cursor.execute("SELECT x FROM myTable WHERE x LIKE '%s%%'" % beginningOfString)
于 2010-01-19T22:06:48.770 に答える