无法将 JSON 数据插入 sqlite3 数据库

Posted

技术标签:

【中文标题】无法将 JSON 数据插入 sqlite3 数据库【英文标题】:Trouble inserting JSON data into sqlite3 database 【发布时间】:2021-10-25 05:54:16 【问题描述】:

我使用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 file page 1 json file page 2

【问题讨论】:

如果可能,请在您的问题中添加 json 文件 【参考方案1】:

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

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

【讨论】:

有效!!谢谢我是 SQL 新手,所以我对查询并不完全确定。谢谢!

以上是关于无法将 JSON 数据插入 sqlite3 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Sqlite3 Python Django 中的数据库中插入特定数据

插入sqlite3数据库

Python将字典插入sqlite3

在 sqlite3 中更快的批量插入?

Sqlite3插入性能测试

Swift SQLITE3 插入/选择问题