[英]json data insertion problem in postgresql database with python
data = []
with open('data.json') as f:
for line in f:
data.append(json.loads(line))
f.close()
fields = [
'id', #integer
'name', #varchar
'log_date', #date
'log_time', #timestamp
'login', #timestamp
'logout' #timestamp
]
for item in data:
my_data = [item[field] for field in fields]
insert_query = "INSERT INTO employee VALUES (%d, %s, %s, %s, %s, %s)"
cur.execute(insert_query, tuple(my_data))
[
{
"id": 1,
"name": "Prosenjit Das",
"log_date": "2019-03-02",
"log_time": "12:10:12.247257",
"login": null,
"logout": null
},
{
"id": 2,
"name": "Sudipto Rahman",
"log_date": "2019-03-02",
"log_time": "12:10:12.247257",
"login": "11:26:45",
"logout": "10:49:53"
},
{
"id": 3,
"name": "Trump Khatun",
"log_date": "2019-03-02",
"log_time": "12:10:12.247257",
"login": null,
"logout": null
}
]
我的數據庫連接沒問題。 在圖片第 37 行中,當我使用轉儲而不是加載時,第 50 行顯示了另一個問題,即“類型錯誤:字符串索引必須是整數”。 注意這里的 json 格式類型是一個列表。 這種問題但不完全是我見過很多但正確不起作用。
謝謝。
所以我會在這里做一些改變
with open('data.json') as f:
data = json.load(f)
# no need to do f.close() since we are using a context manager
fields = [
'id', #integer
'name', #varchar
'log_date', #date
'log_time', #timestamp
'login', #timestamp
'logout' #timestamp
]
for item in data:
my_data = [item[field] for field in fields]
insert_query = "INSERT INTO employee (id, name, log_date, log_time, login, logout) VALUES (%s, %s, %s, %s, %s, %s)"
# also ALL placeholders must be %s even if it is an integer
cur.execute(insert_query, tuple(my_data))
此外,如果您使用psycopg2
模塊進行數據庫操作,您可以執行以下操作
from psycopg2.extras import execute_values
my_data = [tuple(item[field] for field in fields) for item in data]
insert_query = "INSERT INTO employee (id, name, log_date, log_time, login, logout) VALUES %s"
execute_values(cursor, insert_query, my_data)
將 json 加載到 dicts 列表中一次 + 刪除一個額外的逗號
import json
with open('data.json', 'r') as f:
data = json.load(f)
# now you can iterate and push to entries to DB
數據.json
[
{
"id": 1,
"name": "Prosenjit Das",
"log_date": "2019-03-02",
"log_time": "12:10:12.247257",
"login": null,
"logout": null
},
{
"id": 2,
"name": "Sudipto Rahman",
"log_date": "2019-03-02",
"log_time": "12:10:12.247257",
"login": "11:26:45",
"logout": "10:49:53"
},
{
"id": 3,
"name": "Trump Khatun",
"log_date": "2019-03-02",
"log_time": "12:10:12.247257",
"login": null,
"logout": null
}, --> was removed
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.