0

私はまだ Python を優れたシンプルなプログラミング言語として学習しています。問題は DataBase にあり、MySQL を使用してビルドしています。次のようにクエリを記述したので、Python コードからいくつかのタプルを選択したいと思います。

Q = "INSERT INTO contacts (FirstName,LastName,phone,mobile,email,address) VALUES('%s','%s','%s','%s','%s','%s') "% \
            (FN,LN,phone,Mobile,email,address)

変数を使用しているため、問題ありません。
しかし、クエリで (LIKE'') ステートメントを使用したい場合、引用符の問題が発生します。次のように:

    Q = "SELECT LastName FROM contacts WHERE phone LIKE '_'%s'%'" %\
            (phone)

この問題を解決するにはどうすればよいですか、ヒントはありますか?

4

1 に答える 1

5

準備済みステートメントを使用して、文字列の書式設定の問題を回避します。

pattern = "_" + phone + "%"
cursor.execute("SELECT LastName FROM contacts WHERE phone LIKE %s", (pattern,))

準備済みステートメントを使用したくない場合、または他のケースでこの問題に遭遇した場合は、str.formatの使用に切り替えます(ただし、これを行う前にSQL インジェクションについて読んでください)。

Q = "SELECT LastName FROM contacts WHERE phone LIKE '_{0}%'".format(phone)

または、次の 2 つを組み合わせます。

pattern = "_{0}%".format(phone)
cursor.execute("SELECT LastName FROM contacts WHERE phone LIKE %s", (pattern,))
于 2012-06-20T10:27:29.587 に答える