首页 > 解决方案 > 无法将 JSON 数据插入 sqlite3 数据库

问题描述

我使用 python 创建了一个 sqlite3 数据库来存储数据,如下面的代码所示

import sqlite3
conn = sqlite3.connect('tweets_data.sqlite')
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS tweets')
cur.execute('''
    CREATE TABLE tweets (
        id INTEGER PRIMARY KEY, created_at TEXT, full_text TEXT, 
        favourite_count INTEGER, retweet_count INTEGER)
''')

使用此表,我想存储来自 JSON 文件的数据(部分代码被截屏并作为图像附加),我已加载如下所示

import json

with open('tweets.json') as f:
    data = json.load(f)

之后,我尝试使用 for 循环将数据插入表中,以提取所有唯一的推文 ID 及其以下信息。下面的代码是我尝试做的

for records in data:
    cur.execute('INSERT INTO tweets (id, created_at, full_text, favourite_count, retweet_count) VALUES (?, ?, ?, ?, ?)', 
                (records['id'], records['created_at'], records['full_text'], records['user']['favourites_count'], records['retweet_count']))
conn.commit()
print(cur.fetchall())
conn.close()

但是,当我打印 (cur.fetchall()) 时,输出只是一个空列表。表中没有插入任何内容。如果有人能提供帮助,谢谢!

json文件第1页 json文件第2页

标签: pythonjsonsqlite

解决方案


cur.fetchall()返回最后一个查询的结果,并且INSERT不产生任何结果。您首先需要一个SELECT-query:

cur.execute('SELECT * FROM tweets')
rows = cut.fetchall()

推荐阅读