PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để CẬP NHẬT một cột trong một bảng PostgreSQL lớn bằng Python / psycopg2 một cách hiệu quả?

unnest dữ liệu để tạo tất cả cùng một lúc:

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()

Bảng t:

create table t (
    gid integer,
    number integer,
    rnd float,
    result float
);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate + PostgreSQL:quan hệ không tồn tại - Lỗi SQL:0, SQLState:42P01

  2. Làm thế nào để làm tròn giá trị mili giây từ dấu thời gian (0) trong PostgreSQL?

  3. Chỉ trả về các giá trị số từ một cột cơ sở dữ liệu PostgreSQL

  4. Bỏ phần mili giây khỏi dấu thời gian

  5. Dấu ngoặc vuông trong tên bảng / cột không được hỗ trợ?