ошибка sqlite3.OperationalError: near ")": синтаксическая ошибка при попытке добавить в базу данных sqlite из tkinter - PullRequest
0 голосов
/ 11 июля 2019

я получаю сообщение об ошибке:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\max\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "G:\computing project\add to db.py", line 114, in get_items
    C.execute(sql ,vari)
sqlite3.OperationalError: near ")": syntax error

при попытке добавить в базу данных, используя значения, введенные из графического интерфейса с помощью tkinter.Я думаю, что SQL не может получить значения из входных данных.Я попытался изменить вставку в значения для имен, которые находятся в базе данных, но Python не позволяет Thees содержать заглавные буквы.

Я не могу найти ")", указанное в ошибке, где-либо в моем коде, так как это было моей первой мыслью при обнаружении синтаксической ошибки.У меня было несколько проблем при добавлении в эту базу данных, и я использую sqlite 3 с db browser.Я следовал учебнику по Python, но я верю, что учебник использовал Python 2, а не 3

from tkinter import* 
import sqlite3
conn = sqlite3.connect("G:\computing project\database of cars.db")
C = conn.cursor()
import tkinter.messagebox


class Database:
    def __init__ (self, master=None ,*args,**kwargs):
        self.master = master
        self.heading = Label(master , text = "add to the database ", font=("ariel 35 bold") )
        self.heading.place (x=250 , y=0)

        self.name= Label(master, text= "enter product name", font=("arial 18 bold"))
        self.name.place(x=0,y=50)

        self.make_1=  Label(master , text = "enter car make ", font=("ariel 18 bold"))
        self.make_1.place(x=0,y=100)

        self.model_1=  Label(master , text = "enter car model ", font=("ariel 18 bold"),)
        self.model_1.place(x=0,y=150)

        self.regi_1=  Label(master , text = "enter registration plate", font=("ariel 18 bold"))
        self.regi_1.place(x=0,y=200)

        self.colour_1=  Label(master , text = "enter car colour ", font=("ariel 18 bold"))
        self.colour_1.place(x=0,y=250)


        self.cost_1=  Label(master , text = "enter cost price ", font=("ariel 18 bold"))
        self.cost_1.place(x=0,y=300)

        self.tcost_1=  Label(master , text = "enter total cost price ", font=("ariel 18 bold"))
        self.tcost_1.place(x=0,y=350)

        self.sell_1=  Label(master , text = "selling price ", font=("ariel 18 bold"))
        self.sell_1.place(x=0,y=400)

        self.tsell_1=  Label(master , text = "enter total selling price", font=("ariel 18 bold"))
        self.tsell_1.place(x=0,y=450)

        self.assprof_1=  Label(master , text = "enter assumed profit", font=("ariel 18 bold"))
        self.assprof_1.place(x=0,y=500)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=50)

        self.carmake_e = Entry(master, width=25, font=("arial 18 bold"))
        self.carmake_e.place(x=300, y=100)

        self.carmodel_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=150)

        self.regi_e = Entry(master, width=25, font=("arial 18 bold"))
        self.regi_e.place(x=300, y=200)

        self.colour_e = Entry(master, width=25, font=("arial 18 bold"))
        self.colour_e.place(x=300, y=250)

        self.carprice_e = Entry(master, width=25, font=("arial 18 bold"))
        self.carprice_e.place(x=300, y=300)

        self.cost_e = Entry(master, width=25, font=("arial 18 bold"))
        self.cost_e.place(x=300, y=350)

        self.tcost_e = Entry(master, width=25, font=("arial 18 bold"))
        self.tcost_e.place(x=300, y=400)

        self.sellprice_e = Entry(master, width=25, font=("arial 18 bold",))
        self.sellprice_e.place(x=300, y=450)

        self.assumedprofit_e = Entry(master, width=25, font=("arial 18 bold"))
        self.assumedprofit_e.place(x=300, y=500)

        self.b = Button(command=self.get_items)
        self.b.place(x=0,y=0)


    def get_items(self,*args,**kwargs):  #this function gets the items from the entry boxes

        self.carmake= self.carmake_e.get()
        self.carmodel= self.carmodel_e.get()
        self.regi= self.regi_e.get()
        self.colour= self.colour_e.get()
        self.cost= self.cost_e.get()
        self.tcost= self.tcost_e.get()
        self.sellprice= self.sellprice_e.get()
        self.assumedprofit= self.assumedprofit_e.get()

        self.assumedprofit= float(self.sellprice)- float(self.tcost)


        if self.carmake == '' or self.carmodel == '' == self.colour == '':
            print ("WRONG")
            tkinter.messagebox.showinfo("error","please enter values for car make, model and colour")

        else:
            print("solid m8 ")
            sql = "INSERT INTO inventory (carmake,carmode,regi,colour,cost,tcost,sellprice,assumedprofit) VALUES (?,?,?,?,?,?,?,?,)"
            vari=(self.carmake,self.carmodel,self.regi,self.colour,self.cost,self.tcost,self.sellprice,self.assumedprofit)
            C.execute(sql ,vari)
               # C.execute(sql(self.name,self.carmake,self.carmodel,self.regi,self.colour,self.cost,self.tcost,self.sellprice,self.assumedprofit))
            conn.commit()
            tkinter.messagebox.showinfo("success","succesfully added to databse")

root = Tk()
b = Database(root)
frame = Frame(root,width=1920,height=1080)
root.geometry("1920x1080")
root.title("add to database")
root.configure(background="#b7b7e5")
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...