【发布时间】:2021-10-17 12:35:55
【问题描述】:
大家!所以基本上我有这个问题。我正在尝试向巴西的zipcode API 发出请求,但数据以JSON 格式显示。我要做的,就是从API 获取这些信息,并将其放在SQLlite database 上。但是,不知何故,我不知道该怎么做。我尝试使用此代码:
import requests
import sqlite3
import json
print('Identifying the ZIP CODE')
CEPC = input('Please type the zipcode:')
Requisicao = requests.get('https://viacep.com.br/ws/%7B%7D/json/%27.format(CEPC))
print(Requisicao.json())
#Database
con = sqlite3.connect('CEPS.db')
cur = con.cursor()
cur.execute('DROP TABLE IF EXISTS Requisicao')
cur.execute("CREATE TABLE Requisicao (cep int(8), data json)")
for Requisicao1 in Requisicao:
cur.execute("insert into Requisicao values (8, 5)",
[Requisicao1['cep'], json.dumps(Requisicao1)])
cur.commit()
cur.close()
当我尝试向 API 发出请求时,一切正常,但是当我尝试在数据库中插入数据时,我无法做到。说到这段代码部分:
for or Requisicao1 in Requisicao:
cur.execute("insert into Requisicao values (8, 5)",
[Requisicao1['cep'], json.dumps(Requisicao1)])
It gives me the error: TypeError: byte indices must be integers or slices, not str.
邮政编码示例为:09931080, 05565000。
邮政编码示例的输出是:
{
"cep": "05565-000",
"logradouro": "Avenida General Asdrúbal da Cunha",
"complemento": "",
"bairro": "Jardim Arpoador",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
}
这是我尝试获取请求时的输出。
【问题讨论】:
-
您能否在问题中添加一些示例邮政编码,尤其是那些会返回多个结果的邮政编码?
标签: python json python-3.x api sqlite