Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-SQL是更新表中所有行的有效方法_Python_Mysql_Sql Update - Fatal编程技术网

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

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("%

我正在尝试使用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("%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做一些零碎的工作,例如,根据网站上的关键字参数刮取内容,并将刮取的内容保存到数据库中。因此,我可能会定期重新清理网站并更新所有行。