【问题标题】:Python JSON data importingPython JSON 数据导入
【发布时间】:2016-04-22 23:20:22
【问题描述】:

我正在尝试将数据从 json 文件导入到 sqlite,但我遇到了一些错误,我首先认为问题出在路径上,我以多种方式更改了它们但是......没有结果,它给了我这个错误:

Traceback (most recent call last):
  File "C:/Users/Taner/PycharmProjects/untitled/MyProgram.py", line 13, in <module>
    json_object = json.loads(dummy_json)
  File "C:\Users\Taner\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

这是我的代码:

import json
import bz2
import sqlite3

fpath = "C:\\Users\\Taner\\Downloads\\RC_2012-12.bz2"
databasepath = "C:\\Users\\Taner\\Desktop\\Seagate\\reddit"

conn = sqlite3.connect(databasepath)
curs = conn.cursor()
with bz2.BZ2File(fpath) as file:
    for line in file:
        dummy_json = line
        json_object = json.loads(dummy_json)
        po = json.loads(line.decode('utf8'))
        curs.execute("INSERT INTO Reddit VALUES (?,?,?)", (po['id'], po['subreddit_id'], po['subreddit'],))
        conn.commit()

【问题讨论】:

    标签: python json database sqlite python-3.x


    【解决方案1】:

    你的循环的正确形式应该是:

    with bz2.BZ2File(fpath) as file:
        for line in file:
            po = json.loads(json.loads(line.decode('utf8')))
            curs.execute("INSERT INTO Reddit VALUES (?,?,?)", (po['id'], po['subreddit_id'], po['subreddit'],))
            conn.commit()
    

    【讨论】:

      【解决方案2】:

      您已经在这里找到了答案,因为在错误之后的行中,您在将其传递给 json.loads 之前正确地从 utf-8 解码了该行。因此,带有错误的行完全没有意义,您应该将其删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-11
        • 1970-01-01
        • 2020-12-21
        • 2013-06-01
        • 2017-05-05
        • 1970-01-01
        • 2020-05-01
        相关资源
        最近更新 更多