Python sqlite3.OperationalError

时间:2017-04-15 10:08:57

标签: python sqlite

错误:sqlite3.OperationalError:表zarada有13列,但提供了14个值

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)

当我用print函数替换backend1.unesi时,我得到以下结果:

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

有13个值,我遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

你在这里缺少逗号:

porez DECIMAL  ukupno DECIMAL

基本上,您创建了13列,然后尝试使用14个参数填充。您的主键ID列也计算在内。

您的查询应如下所示:

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)")