gpt4 book ai didi

python - 使用python在postgresql数据库中插入json数据的问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:27:18 26 4
gpt4 key购买 nike

主.py

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

Error thorough

数据.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
}
]

postgresql 列字段

postgresql column fields

我的数据库连接没问题。在该图片的第 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)

关于python - 使用python在postgresql数据库中插入json数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com