SQLite中的错误“所有值必须具有相同数量的术语”

2024-05-13 03:27:59 发布

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

很高兴成为这个平台的一部分,你们这些经验丰富的程序员, 现在我正在用python开发一个POS系统项目,使用tkinter作为前端&;Sqlite作为数据库。当我把数据放进去的时候,我面临着这个问题。 '''

def proceed_raise_invoice():
    execute_query(connection, create_invoices)

ttk.Label(tab1, text="Raise Invoice", font=('', 20)).grid(column=0, row=0)
ttk.Label(tab1, text="General Details:", font=('', 15)).grid(column=0, row=4)
invoice_number = tk.StringVar()
ttk.Label(tab1, text="Invoice Number:", font=('', 12)).grid(column=0, row=5)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=invoice_number).grid(column=3, row=5)
invoice = invoice_number.get()
invoice_date = date.today()
ttk.Label(tab1, text="Date:", font=('', 12)).grid(column=0, row=6)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=invoice_date).grid(column=3, row=6)
ttk.Label(tab1, text="Details of receiver/billed to:", font=('', 15)).grid(column=0, row=7)
name = ""
ttk.Label(tab1, text="Name:", font=('', 12)).grid(column=0, row=8)
ttk.Combobox(tab1, width=30, textvariable=name).grid(column=3, row=8)
customer_gstin = "07"
ttk.Label(tab1, text="GSTIN:", font=('', 12)).grid(column=0, row=9)
ttk.Label(tab1, text="", font=('', 12), textvariable=customer_gstin).grid(column=3, row=9)
ttk.Label(tab1, text="Purchasing:", font=('', 15)).grid(column=0, row=10)
product = ""
ttk.Label(tab1, text="Name of product:", font=('', 12)).grid(column=0, row=11)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=product).grid(column=3, row=11)
hsn = ""
ttk.Label(tab1, text="HSN ACS:", font=('', 12)).grid(column=0, row=12)
ttk.Combobox(tab1, width=30, textvariable=hsn).grid(column=3, row=12)
uom = ""
ttk.Label(tab1, text="Units of Measure:", font=('', 12)).grid(column=0, row=13)
ttk.Entry(tab1, width=33, textvariable=uom).grid(column=3, row=13)
quantity = int(1)
ttk.Label(tab1, text="Quantity:", font=('', 12)).grid(column=0, row=14)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=quantity).grid(column=3, row=14)
rate = int(0)
ttk.Label(tab1, text="Rate:", font=('', 12)).grid(column=0, row=15)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=rate).grid(column=3, row=15)
supplier = ""
ttk.Label(tab1, text="Supplier:", textvariable=supplier, font=('', 15)).grid(column=0, row=18)
ttk.Combobox(tab1, width=20, font=('', 12)).grid(column=3, row=18)
ttk.Button(tab1, text='Proceed', command=proceed_raise_invoice).grid(column=3, row=19)

amount = quantity * rate

list = ['invoice_number', 'invoice_date', 'name', 'customer_gstin', 'product', 'hsn', 'uom', 'quantity', 'rate', 'amount', 'supplier']

create_invoices_table = """
CREATE TABLE IF NOT EXISTS invoices (
    invoice_no TEXT PRIMARY KEY NOT NULL,
    date TEXT NOT NULL,
    customer_name TEXT NOT NULL ,
    gstin TEXT NOT NULL,
    product TEXT NOT NULL,
    hsn INTEGER NOT NULL,
    uom TEXT NOT NULL,
    quantity INTEGER NOT NULL,
    rate INTEGER NOT NULL,
    amount INTEGER NOT NULL,
    supplier TEXT NOT NULL
);
"""
execute_query(connection, create_invoices_table)

create_invoices = """
INSERT INTO
    invoices (invoice_no, date, customer_name, gstin, product, hsn, uom, quantity, rate, amount, supplier)
VALUES
    (?,?),('list')
"""

'''

我在这里试图做的是从tkinter小部件中检索数据,然后将其上载到数据库。如果您能指出哪里出了问题,如果您能告诉我是否使用了正确的方法从tkinter小部件检索数据,我将不胜感激。 谢谢 阿内什·梅塔


Tags: textnotcolumninvoicewidthnulllabeltab1
1条回答
网友
1楼 · 发布于 2024-05-13 03:27:59

就你的代码而言,你的代码有一些问题。Tkinter仅通过按钮发送值

list是python中的一个关键字,因此将其重命名为list1。

数量是多少?也不匹配。 您也不应该在同一个框架中使用StringVar()的.get()函数,而应该在procedue\u raise\u invoice()方法中使用它

在下面的函数中,我使用了StringVar的.get()方法来获取存储在StringVar中的值(用户键入的值)

在通过tkinter按钮调用的函数中始终使用get()方法。单击按钮后,它将获取StringVar的值。不要全局使用StringVar的.get()

您可以使用sqlite,如下所示:

import sqlite3 as db

conn = db.connect('dbname.db')
cur = conn.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS invoices (
    invoice_no TEXT PRIMARY KEY NOT NULL,
    date TEXT NOT NULL,
    customer_name TEXT NOT NULL ,
    gstin TEXT NOT NULL,
    product TEXT NOT NULL,
    hsn INTEGER NOT NULL,
    uom TEXT NOT NULL,
    quantity INTEGER NOT NULL,
    rate INTEGER NOT NULL,
    amount INTEGER NOT NULL,
    supplier TEXT NOT NULL
)
""")
cur.close()
conn.commit()
conn.close()

invoice_number = tk.StringVar()
customer_gstin = tk.StringVar("07")
today = date.today()
today = str(today)
invoice_date = tk.StringVar(today)
name = tk.StringVar()
product = tk.StringVar()
quantity = tk.IntVar(1)
rate = tk.IntVar(0)
hsn = tk.StringVar()
uom = tk.StringVar()
supplier = tk.StringVar()


def proceed_raise_invoice():
    conn = db.connect('dbname.db')
    cur = conn.cursor()

    amount = quantity.get() * rate.get()

    list1 = (invoice_number.get(), invoice_date.get(), name.get(), customer_gstin.get(), product.get(), hsn.get(), uom.get(), quantity.get(), rate.get(), amount, supplier.get())

    cur.execute("""
    INSERT INTO
    invoices (invoice_no, date, customer_name, gstin, product, hsn, uom, quantity, rate, amount, supplier)
    VALUES (?,?,?,?,?,?,?,?,?,?,?)""",list1)


    cur.close()
    conn.commit()
    conn.close()


ttk.Label(tab1, text="Raise Invoice", font=('', 20)).grid(column=0, row=0)
ttk.Label(tab1, text="General Details:", font=('', 15)).grid(column=0, row=4)

ttk.Label(tab1, text="Invoice Number:", font=('', 12)).grid(column=0, row=5)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=invoice_number).grid(column=3, row=5)

ttk.Label(tab1, text="Date:", font=('', 12)).grid(column=0, row=6)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=invoice_date).grid(column=3, row=6)
ttk.Label(tab1, text="Details of receiver/billed to:", font=('', 15)).grid(column=0, row=7)

ttk.Label(tab1, text="Name:", font=('', 12)).grid(column=0, row=8)
ttk.Combobox(tab1, width=30, textvariable=name).grid(column=3, row=8)

ttk.Label(tab1, text="GSTIN:", font=('', 12)).grid(column=0, row=9)
ttk.Label(tab1, text="", font=('', 12), textvariable=customer_gstin).grid(column=3, row=9)
ttk.Label(tab1, text="Purchasing:", font=('', 15)).grid(column=0, row=10)

ttk.Label(tab1, text="Name of product:", font=('', 12)).grid(column=0, row=11)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=product).grid(column=3, row=11)

ttk.Label(tab1, text="HSN ACS:", font=('', 12)).grid(column=0, row=12)
ttk.Combobox(tab1, width=30, textvariable=hsn).grid(column=3, row=12)

ttk.Label(tab1, text="Units of Measure:", font=('', 12)).grid(column=0, row=13)
ttk.Entry(tab1, width=33, textvariable=uom).grid(column=3, row=13)

ttk.Label(tab1, text="Quantity:", font=('', 12)).grid(column=0, row=14)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=quantity).grid(column=3, row=14)

ttk.Label(tab1, text="Rate:", font=('', 12)).grid(column=0, row=15)
ttk.Entry(tab1, width=22, font=('', 12), textvariable=rate).grid(column=3, row=15)

ttk.Label(tab1, text="Supplier:", textvariable=supplier, font=('', 15)).grid(column=0, row=18)
ttk.Combobox(tab1, width=20, font=('', 12)).grid(column=3, row=18)
ttk.Button(tab1, text='Proceed', command=proceed_raise_invoice).grid(column=3, row=19)

相关问题 更多 >