I have a large table with ca. 10 million rows in PostgreSQL 9.4 database. It looks somewhat like this:
gid | number1 | random | result | ...
1 | 2 | NUL
unnest the data to make it all at once:
def create_random(i):
return random() * i
curs.execute("select gid, number from t;")
data = curs.fetchall()
results = []
for i in data:
results.append((create_random(i[1]), i[0]))
curs.execute("""
update t
set
rnd = s.rnd,
result = number * s.rnd
from unnest(%s) s(rnd numeric, gid integer)
where t.gid = s.gid;
""", (results,))
con.commit()
Table t:
create table t (
gid integer,
number integer,
rnd float,
result float
);