简体   繁体   中英

Python sqlite3.OperationalError

Error:sqlite3.OperationalError: table zarada has 13 columns but 14 values were supplied

backend1.py:

import sqlite3

def konekcija():
    conn=sqlite3.connect("zarada.db")
    cur=conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS zarada (id INTEGER PRIMARY KEY, ime TEXT, prezime TEXT, JMBG TEXT, neto DECIMAL, bruto DECIMAL, pioZaposleni DECIMAL, pioPoslodavac DECIMAL, zdravstvoZaposleni DECIMAL, zdravstvoPoslodavac DECIMAL, nezaposlenostZaposleni DECIMAL, nezposlensotPoslodavac DECIMAL, porez DECIMAL  ukupno DECIMAL)")
    conn.commit()
    conn.close()

def unesi(ime, prezime, jmbg, neto, bruto, pioZaposleni, pioPoslodavac, zdravstvoZaposleni, zdravstvoPoslodavac, nezaposlenostZaposleni, nezposlensotPoslodavac, porez, ukupno):
    conn=sqlite3.connect("zarada.db")
    cur=conn.cursor()
    cur.execute("INSERT INTO zarada VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (ime, prezime, jmbg, neto, bruto, pioZaposleni, pioPoslodavac, zdravstvoZaposleni, zdravstvoPoslodavac, nezaposlenostZaposleni, nezposlensotPoslodavac, porez, ukupno))
    conn.commit()
    conn.close()

konekcija()

frontend.py:

def unesiKomanda():
    backend1.unesi(imeVar, prezimeVar, jmbgVar,neto, bruto, pioIznos1, pioIznos2, zdravstvoIznos1, zdravstvoIznos2, nezaposlenostIznos1, nezaposlenostIznos2, porezIznos, bruto2iznos)

when I replace backend1.unesi with print function, I get the following result:

Name LastName idnumber 50000.0 69757.48930099858 9766.048502139802 8370.89871611983 3487.8744650499293 3487.8744650499293 488.3024251069901 488.302425106
9901 5875.748930099859 81965.04992867332

There is 13 values, and I'm missing something.

You are missing comma here:

porez DECIMAL  ukupno DECIMAL

Essentially you are creating 13 columns and then trying to populate with 14 arguments. Your primary key id column counts too.

Your query should look like this:

cur.execute("CREATE TABLE IF NOT EXISTS zarada (id INTEGER PRIMARY KEY, ime TEXT, prezime TEXT, JMBG TEXT, neto DECIMAL, bruto DECIMAL, pioZaposleni DECIMAL, pioPoslodavac DECIMAL, zdravstvoZaposleni DECIMAL, zdravstvoPoslodavac DECIMAL, nezaposlenostZaposleni DECIMAL, nezposlensotPoslodavac DECIMAL, porez DECIMAL, ukupno DECIMAL)")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM