# -*- 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”。
如果匹配,我想删除所有获取所有行的循环行。
当正则表达式找到行时,如何编写delete语句?
非常感谢!
答案 0 :(得分:2)
您可以在SQL中使用LIKE:
DELETE FROM `table` WHERE `content` LIKE "%value%"
执行你的sql后重要的是提交:
a = cur.execute(sql)
con.commit()
答案 1 :(得分:0)
如果我怀疑您要删除符合某些条件的行,则根本不需要选择。
DELETE FROM tableName WHERE columnName [=, !=, <, >, LIKE] columnValue
如果你需要正则表达式匹配,请阅读:http://dev.mysql.com/doc/refman/5.1/en/regexp.html