Python - SQL更新表中所有行的有效方法

时间:2014-10-24 13:02:25

标签: python mysql sql-update

我正在尝试使用python更新包含大量行的sql表。假设该表有三列,(id BIGINT,关键文本,内容文本)。我需要更新"内容"所有行的字段基于"键"上的一些函数myfun。 Myfun使用一些Web API,可能需要一点时间 所以我做的是:

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='xxx')
cur = conn.cursor()
conn.select_db("%s" % dbname)
cur.execute("select key from table")
results = cur.fetchall()
for result in results:
  txt = myfun(result[0])
  cur.execute("update posts set content = %s where key = %s", (txt, result[0]))
conn.commit()
cur.close()
conn.close()

当桌子很小时,这对我有用。如果表有很多行,我不确定它是否有效。或者在这种情况下是否有更有效的方法来更新行?

由于

1 个答案:

答案 0 :(得分:0)

如果您使用innodb,您可以在一个事务中提交所有内容,将外键检查,唯一检查等设置为false, 但是你确定瓶颈是mysql更新命令还是myfun函数,如果它是myfun,你应该专注于优化它。

您是否在myfun中进行同步通话并等待响应?如何使它与unirest

等异步