Python-SQL是更新表中所有行的有效方法
我正在尝试使用python更新包含大量行的sql表。假设该表有三列,id BIGINT、key text和content text。我需要更新的内容字段的所有行的基础上的一些功能myfun的关键。Myfun使用一些web API,可能需要一些时间。 所以我所做的是:Python-SQL是更新表中所有行的有效方法,python,mysql,sql-update,Python,Mysql,Sql Update,我正在尝试使用python更新包含大量行的sql表。假设该表有三列,id BIGINT、key text和content text。我需要更新的内容字段的所有行的基础上的一些功能myfun的关键。Myfun使用一些web API,可能需要一些时间。 所以我所做的是: conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='xxx') cur = conn.cursor() conn.select_db("%
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()
当桌子很小的时候,这对我很有用。若表中有很多行,我不确定它是否有效。或者在这种情况下有没有更有效的方法来更新行
谢谢如果您使用innodb,您可以在一个事务中提交所有内容,将外键检查、唯一性检查等设置为false, 但是你有没有检查过瓶颈是mysql更新命令还是myfun函数,如果是myfun,你应该专注于优化它
您是否正在myfun中进行同步呼叫并等待响应?使用类似于的东西使其异步怎么样?你能描述/添加myfun的片段吗?我使用myfunkeyword做一些零碎的工作,例如,根据网站上的关键字参数刮取内容,并将刮取的内容保存到数据库中。因此,我可能会定期重新清理网站并更新所有行。