【发布时间】:2019-03-03 14:17:09
【问题描述】:
main.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))
data.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 列字段
我的数据库连接正常。在该图片的第 37 行中,当我使用转储而不是加载时,第 50 行显示了另一个问题,即“类型错误:字符串索引必须是整数”。 注意这里的 json 格式类型是一个列表。 这类问题,但不完全是我见过的很多,但不能正常工作。
谢谢。
【问题讨论】:
-
json无效,因为您在数组中的最后一个对象后面有一个尾随逗号,删除该逗号并尝试再次读取它,也不要读取json文件行一行一行,一口气读完 -
从@aws_apprentice 开始,每当使用
json文件时,我喜欢将内容粘贴到jsonformatter.curiousconcept.com 以在运行程序之前检查其语法是否正确 -
@aws_apprentice 谢谢。但是我从 API 获得的这个 json 数据。那么在这种情况下,我可以在检索 json 数据后删除逗号吗?
-
这里还有其他问题,特别是您需要指定要插入的列,因为您没有上传表中存在的所有列
-
@Prosenjit 你必须修改它以符合 json 标准,否则它不是有效的 json
标签: python json database postgresql file