使用python和mysqldb时如何在不使用字段名的情况下删除mysql行?

时间:2012-09-20 16:36:38

标签: python mysql-python

# -*- 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语句?

非常感谢!

2 个答案:

答案 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