首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python数据导入

Python数据导入
EN

Stack Overflow用户
提问于 2016-01-17 21:06:25
回答 2查看 199关注 0票数 1

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

代码语言:javascript
复制
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'

这是我的密码:

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-17 21:22:14

循环的正确形式应该是:

代码语言:javascript
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2016-01-17 21:17:47

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34843689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档