Python mysql:如何循环遍历表和正则表达式替换字段?

时间:2013-08-01 16:52:20

标签: python mysql

我正在尝试迭代一个表,获取一个字段中有一个模式的行,然后用匹配组更新同一行。

以下代码运行时没有错误,print子句之前的两个update行输出正确的值。我已经按照类似的答案来提出update条款,逻辑似乎对我来说。但是代码不起作用,即没有更新行。我哪里做错了?谢谢,

# -*- coding: utf-8 -*-
import re
import MySQLdb

pattern = re.compile('@(.*)@.*$')

conn = MySQLdb.connect(
    host='localhost', user='root',
    passwd='password', db='j314', charset='utf8')
cursor = conn.cursor()

cursor.execute(
    """select `id`, `created_by_alias` from w0z9v_content where `catid` = 13 AND `created_by_alias` regexp "^@.*@.*$" limit 400""")

aliases = cursor.fetchall()
for alias in aliases:
    newalias = pattern.match(alias[1])
    if newalias.group(1) is not None:
        # print alias[0]
        # print newalias.group(1)
        cursor.execute("""
        update w0z9v_content set created_by_alias = %s where id = %s""", (newalias.group(1), alias[0]))
conn.close

1 个答案:

答案 0 :(得分:0)

autocommit可能在服务器上全局禁用。

更新后执行COMMIT,或在会话开始时执行SET autocommit=1

http://dev.mysql.com/doc/refman/5.0/en/commit.html

另外,你实际上并没有关闭连接,你忘了调用关闭:

conn.close()