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)
実行例 »プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。