尝试向Sqlite数据库插入多个值时出现问题

2024-05-02 00:56:36 发布

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

我必须向巴西ZIPCODES API发出请求,以获取JSON数据并使用python将其插入sqlite数据库。我现在使用的是pycharm,但是我需要插入很多列,但是代码没有插入值。这是密码

import requests
import sqlite3
import json

CEPC = input("Please type the zipcode:")

print("Identifying the ZIP CODE")

Requisicao = requests.get(f"https://viacep.com.br/ws/{CEPC}/json")

if Requisicao.status_code == 200:
    data = Requisicao.json()
    # Database
    con = sqlite3.connect("Banco de dados/CEPS.db")
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS Requisicao")
    cur.execute("CREATE TABLE Requisicao (cep, logradouro, bairro, uf, ddd, siafi, 
    validation, created json)")

    cur.executemany("insert into Requisicao values (?, ?, ?, ?, ?, ?, ?, ?)", (data["cep"], 
    json.dumps(data)))
    con.commit()
    con.close()
else:
    print(f"Request failed with status code {Requisicao.status_code} ")

zipcode的输出为:

{
  "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"
}

我需要插入所有这些列:“cep、logadouro、complemento、bairro、localidade、uf、ibge、gia、ddd、siafi”。当我尝试运行代码时,它会给出错误:

Traceback (most recent call last):
File "C:\Users\Gui\PycharmProjects\pythonProject\main.py", line 19, in <module>
cur.executemany("insert into Requisicao values (?, ?, ?, ?, ?, ?, ?, ?)", (data["cep"], 
json.dumps(data)))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement 
uses 8, and there are 9 supplied

当我尝试将列的值与“?”完全相同时,错误显示“使用8,提供了7”


Tags: 代码importjsondatastatuscodeconsqlite3
1条回答
网友
1楼 · 发布于 2024-05-02 00:56:36

这段代码将把JSON中的所有10个值插入表Requisicao和0中,用于验证和创建,尽管这是可以更改的

import requests
import sqlite3
import json

CEPC = input("Please type the zipcode:")

print("Identifying the ZIP CODE")

Requisicao = requests.get(f"https://viacep.com.br/ws/{CEPC}/json")

if Requisicao.status_code == 200:
    data = Requisicao.json()
    # Database
    con = sqlite3.connect("CEPS.db")
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS Requisicao")
    cur.execute("CREATE TABLE Requisicao (cep,logradouro,complemento,bairro,localidade,uf,ibge,gia,ddd,siafi, validation, created)")
    cur.execute("insert into Requisicao values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",tuple(data.values())+(0, 0))
    con.commit()
    con.close()
else:
    print(f"Request failed with status code {Requisicao.status_code} ")

相关问题 更多 >