我正试图在PostgreSQL中插入一些JSON文件,但我是一种新的,我有一些问题。所以,我已经有了文件,这些文件已经编码了,这里有一个简单的例子,我正在尝试做什么。在Postgres中创建一些表,并在其中添加twitter信息。
import json
import psycopg2
conn = psycopg2.connect("dbname='postgres' user='bilabial' host='localhost'")
cur = conn.cursor()
linenumber = 0
data = open('tweets_testing.json').read()
for line in data:
linenumber += 1
try:
str_line = line.strip()
vals = json.loads(str_line)
tweets = vals["text"]
cur.execute("CREATE TABLE tweetstext (text VARCHAR(255));")
cur.execute("INSERT INTO tweetstext (" + tweets+ ");")
conn.commit()
except KeyError:
break
所以我得到的错误是"TypeError:列表索引必须是整数,而不是str"。当我读到它的时候,我不太明白它的区别,所以任何帮助都会非常感激。
vals = json.loads(str_line)
vals的 type
list
。print "Type vals", type(vals)
vals
类型演示:根据你的代码。
>>> import json
>>> str_line = "[1,2,3,5]"
>>> vals = json.loads(str_line)
>>> vals
[1, 2, 3, 5]
>>> type(vals)
<type 'list'>
>>> vals["text"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>>
期待vals
的type
的下一行应该是dict
,即字典。
`tweets = vals["text"]`
可以剪切str_line
变量的值结构吗?
[编辑2]
根据我,我们需要加载json文件的所有内容。
data = open('tweets_testing.json').read()
vals = json.loads(data)
但代码会根据输入和逻辑改变