如何使用python将从api url下载的json数据解析存储到SQLite DB表中

2024-04-18 09:03:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python上遇到了麻烦(假设我是一个初学者……),我试图解析由api URL下载的以下json数据(部分数据)。。。你知道吗

{
"sha": "cffff88d9f69932845ea770b09bfdfbdd3c23ed9",
"node_id": "MDY6Q29tbWl0NjUyNzU5NTM6Y2ZmZmY4OGQ5ZjY5OTMyODQ1ZWE3NzBiMDliZmRmYmRkMzJmZDAzYQ==",
"commit": {
  "author": {
    "name": "Anton",
    "email": "user1@test1.com",
    "date": "2018-09-18T08:46:12Z"
  },
  "committer": {
    "name": "Anton",
    "email": "user1@test1.com",
    "date": "2018-09-18T08:46:12Z"
  },
  "message": "Release 2.0.0",
  "author": {
  "login": "Tony",
  }
}

一旦我解析了这些数据,我想将它们存储到一个表“users”中,其中包含sha-date-author-message列(使用SQLite) |安东| 2018-09-18T08:46:12Z |托尼|发行版2.0.0 |
(我希望python会这样做……)

我曾使用请求库从api检索数据,但当我尝试将数据存储到列中时,python出现了错误。我使用for循环来存储数据。。。你知道吗

api_url = requests.get('https://.......)

data_json = api_url.json()

sqlite_file = 'users.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
c.execute("DROP TABLE IF EXISTS users")
c.execute("CREATE TABLE IF NOT EXISTS users (sha TEXT, date TEXT, author 
TEXT, message TEXT, is_external INTEGER)")

for item in data_json:
    sha = item['sha']
    date = item['commit']['author']['date']
    author = item['author']['login']
    message = item['commit']['message']

 c.execute("INSERT INTO users (sha,date,author,message) VALUES (?,?,?,?)", sha, date, author, message)


 conn.commit()
 conn.close()

错误如下:

c.execute("INSERT INTO users (sha,date,author,message) VALUES (?,?,?,?)", sha,date,author,message) TypeError: function takes at most 2 arguments (5 given)

我被困住了。。。谢谢你的帮助!你知道吗


Tags: 数据textnameapijsonmessageexecutedate
1条回答
网友
1楼 · 发布于 2024-04-18 09:03:16

您需要提供参数作为一个参数,因此使其成为一个iterable-例如列表或元组。你知道吗

c.execute("INSERT INTO users (sha,date,author,message) VALUES (?,?,?,?)", [sha, date, author, message])

-或-

c.execute("INSERT INTO users (sha,date,author,message) VALUES (?,?,?,?)", (sha, date, author, message))

相关问题 更多 >