0
# -*- coding: utf-8 -*-

import re
import sys
import MySQLdb
from getpass import getpass

reload(sys)
sys.setdefaultencoding('utf-8')

conn = MySQLdb.connect(host, user, passwd, db, charset = 'utf-8')
cur = conn.cursor()
cur.execute("show tables")
tablenames = [i[0] for i in cur.fetchall()]

cur.execute("SELECT * FROM %s" % tablenames)
rows = cur.fetchall()
for row in rows:
    x = re.compile(r"\bhello\b")
    p = x.search(str(row))
    if p:
    cur.execute("DELETE FROM %s WHERE " % t) # how to delete this row

conn.close()

上記のコードを使用して、テーブルの行を正規表現で検索し、キーワード「hello」を検索します。

一致する場合は、すべて取得した行を for ループした行を削除したいと思います。

正規表現が行を見つけたときに削除ステートメントを作成するにはどうすればよいですか?

どうもありがとう!

4

2 に答える 2

2

SQL で LIKE を使用できます。

DELETE FROM `table` WHERE `content` LIKE "%value%"

SQLを実行した後の重要なことはコミットです:

a = cur.execute(sql)
con.commit()
于 2013-08-14T09:07:19.107 に答える
0

いくつかの基準を満たす行を削除したいと思うなら、選択はまったく必要ありません。
DELETE FROM tableName WHERE columnName [=, !=, <, >, LIKE] columnValue
これを読むよりも正規表現の一致が必要な場合: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

于 2012-09-20T16:53:24.547 に答える