Python MySQL Where
フィルタで選択
テーブルからレコードを選択する場合、「WHERE」ステートメントを使用して選択をフィルタリングできます。
例
アドレスが「ParkLane38」であるレコードを選択します。結果:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
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="yourusername",
password="yourpassword",
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モジュールには、クエリ値をエスケープするメソッドがあります。
例
placholder%s
メソッドを使用してクエリ値をエスケープします。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
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)