TECH I.S.

Python MySQL WHERE


フィルターで選ぶ

テーブルからレコードを選択する場合、「WHERE」ステートメントを使用して選択をフィルタリングできます。

住所が「Park Lane 38」のレコードを選択した結果:

import mysql.connector mydb = mysql.connector.connect(   host="localhost",   user="<em>yourusername</em>",   password="<em>yourpassword</em>",   database="mydatabase" ) mycursor = mydb.cursor() sql = "SELECT * FROM customers WHERE address ='Park Lane 38'" mycursor.execute(sql) myresult = mycursor.fetchall() for x in myresult:   print(x)
実行例 »

ワイルドカード文字

特定の文字または語句で始まる、含む、または終わるレコードを選択することもできます。

ワイルドカード文字を表すには%を使用します。

住所に「way」という単語が含まれるレコードを選択:

import mysql.connector mydb = mysql.connector.connect(   host="localhost",   user="<em>yourusername</em>",   password="<em>yourpassword</em>",   database="mydatabase" ) mycursor = mydb.cursor() sql = "SELECT * FROM customers WHERE address LIKE '%way%'" mycursor.execute(sql) myresult = mycursor.fetchall() for x in myresult:   print(x)
実行例 »

SQL インジェクションを防ぐ

ユーザーがクエリ値を提供する場合は、値をエスケープする必要があります。

これは、データベースを破壊または悪用する一般的なWebハッキング手法であるSQLインジェクションを防ぐためです。

mysql.connectorモジュールには、クエリ値をエスケープするメソッドがあります。

プレースホルダー%sメソッドを使用してクエリ値をエスケープする

import mysql.connector mydb = mysql.connector.connect(   host="localhost",   user="<em>yourusername</em>",   password="<em>yourpassword</em>",   database="mydatabase" ) mycursor = mydb.cursor() sql = "SELECT * FROM customers WHERE address = %s" adr = ("Yellow Garden 2", ) mycursor.execute(sql, adr) myresult = mycursor.fetchall() for x in myresult:   print(x)
実行例 »

プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細