Đầu tiên, giải nén ids
vào danh sách các bộ giá trị:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Tiếp theo, sử dụng hàm extras.execute_values ():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Đối số thứ hai của hàm thực thi (query, vars_list)
phải là một chuỗi trong khi data
là một đối tượng mà các phần tử không thể được truy cập bằng các chỉ mục số nguyên.
Do hiệu suất, hàm đầu tiên thực hiện một truy vấn duy nhất với nhiều đối số, trong khi hàm thứ hai thực thi nhiều truy vấn như đối số.
Lưu ý rằng theo mặc định đối số thứ ba của execute_values()
là danh sách các bộ giá trị, vì vậy chúng tôi đã trích xuất ids
theo cách này.
Nếu bạn phải chèn giá trị vào nhiều cột, mỗi bộ trong danh sách phải chứa tất cả các giá trị cho một hàng được chèn, ví dụ:
values = list((item['id'], item['key']) for item in data['issues'])
query = """
INSERT into Countries (id, revenue)
VALUES %s;
"""
extras.execute_values(cur, query, values)