Dav*_*ley 1 python mysql sql count mysql-python
我有2张桌子; 一个是用户,另一个是用户操作.我想计算每个用户的操作数,并将其记录在users表中.有~100k用户,以下代码需要6个小时!肯定有更好的办法!
def calculate_invites():
sql_db.execute("SELECT id, uid FROM users")
for row in sql_db:
id = row['id']
uid = row['uid']
sql1 = "SELECT COUNT(1) FROM actions WHERE uid = %s"
sql_db.execute(sql1, uid)
count_actions = sql_db.fetchone()["COUNT(1)"]
sql = "UPDATE users SET count_actions=%s WHERE uid=%s"
sql_db.execute(sql, (count_actions, uid))
Run Code Online (Sandbox Code Playgroud)
您可以将此作为一个声明:
update users
set count_actons = (select count(*) from actions a where a.uid = users.uid)
Run Code Online (Sandbox Code Playgroud)
不用于循环.没有多个查询.在SQL中用SQL做什么.通常,循环遍历行是您希望在数据库中而不是在应用程序中执行的操作.