Hatena::ブログ(Diary)

Heavens hell

2011-10-27

[] MySQLdb で like 検索

メモ。

Python の MySQLdb で like 検索を行う場合。

import MySQLdb

connector = MySQLdb.connect(
  host=host, port=port, db=db, user=user, passwd=password,
  use_unicode=0, charset='utf8'
)
cursor = connector.cursor()
param = 'python'
sql = """SELECT * FROM news where title lilke '%%s%'"""
sql = sql % param
cursor.execute(sql);
rows = cursor.fetchall()

とかやると、エラーになった。

ValueError: unsupported format character ''' (0x27)
sql = """SELECT * FROM news where title lilke '%s'"""
sql = sql % ('%%%s%%' % param)

とやると、意図通り動いた。


2011/11/13 追記:

cursor.execute("""SELECT * FROM news WHERE title LIKE %s""", ("%python%",))

というように第二引数に設定するといけるとコメントで教えて頂きました。

ありがとうございます!

psapphopsappho 2011/11/13 22:24 はじめまして。トラックバックからたどってブログ拝見しました。
この問題なんですけど、executeの第2引数にパラメータを渡すとちゃんとエスケープできるので、試してみて頂けると幸いです!

cursor.execute("""
SELECT * FROM news WHERE title LIKE %s
""", ("%python%",))

heavenshellheavenshell 2011/11/13 22:36 id:psappho

おお、ありがとうございます!
その方法で行けるんですね!
知りませんでした&追記しました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/heavenshell/20111027/1319712031
リンク元