我的資料庫有以下列:id、name、group、timesamp、totaltime、errorcode
我正在嘗試將以下資料串列插入到資料庫中:
data = [
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode},
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode},
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode},
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode}
]
將此類資料串列插入資料庫的最佳(最短)方法是什么。我的偏好是將所有行插入在一起。
uj5u.com熱心網友回復:
我會使用 executemany
import psycopg2
data = [
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode},
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode},
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode},
{"name": "samplename", "group": "samplegroup", "timestamp": sampletimestamp,
"totaltime": sampletotaltime, "errorcode": sampleerrorcode}
]
db = psycopg2.connect("dbname='my_database' user='user' password='password'")
cursor = db.cursor()
cursor.executemany(
'INSERT INTO mytable (name, group, timestamp, totaltime, errorcode) '
'VALUES (%(name)s, %(group)s, %(timestamp)s, %(totaltime)s, %(errorcode)s)',
data
)
uj5u.com熱心網友回復:
使用本機引數化查詢,如以下示例,并使用完整的 json 文本作為引數。一次事務中的所有行。根據您的表結構,型別轉換可能會有所不同。
insert into the_table (name, "group", "timesamp", totaltime, errorcode)
select j->> 'name',
(j ->> 'group')::integer,
(j ->> 'timestamp')::timestamp,
(j ->> 'totaltime')::interval,
(j ->> 'errorcode')::integer
from jsonb_array_elements(%s::jsonb) j;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/388947.html
標籤:Python 蟒蛇-3.x PostgreSQL的 sql 插入
上一篇:合并每個用戶的陣列文本
下一篇:改變pygame中方塊的顏色
