Python 将tkinter上的条目保存到sqlite3
提前感谢您的帮助 我一直在网上寻找解决方案,一直在努力寻找。我试图将tkinter上的输入文本框中的一些数据保存到SQLite3中的表中,但无论我做什么尝试,每次都会收到相同的错误。代码如下 请注意,我几天前才开始从youtube视频学习编码。道歉,如果这真的很简单Python 将tkinter上的条目保存到sqlite3,python,tkinter,sqlite,Python,Tkinter,Sqlite,提前感谢您的帮助 我一直在网上寻找解决方案,一直在努力寻找。我试图将tkinter上的输入文本框中的一些数据保存到SQLite3中的表中,但无论我做什么尝试,每次都会收到相同的错误。代码如下 请注意,我几天前才开始从youtube视频学习编码。道歉,如果这真的很简单 **python file code** from tkinter import * import sqlite3 import tkinter.messagebox # connect to database conn = s
**python file code**
from tkinter import *
import sqlite3
import tkinter.messagebox
# connect to database
conn = sqlite3.connect("RMS.db")
c = conn.cursor()
# tkinter window
class Application:
def __init__(self, master):
self.master = master
# Creating frames in the master
self.left = Frame(master, width=200, height=60, bg="grey")
self.left.pack(side=LEFT)
self.right = Frame(master, width=0, height=0, bg="grey")
self.right.pack(side=RIGHT)
# labels for window
self.driverlevel = Label(self.left, text="Driver Level:", font="calabri 12 bold", fg="white", bg="grey")
self.driverlevel.place(x=1, y=2)
# Entries for left window
self.driverlevel_ent = Entry(self.left, width=20)
self.driverlevel_ent.place(x=5, y=27)
# Save Button
self.submit = Button(self.left, text="Add", font="calabri 12 bold", fg="white", bg="grey", command=self.addlevel)
self.submit.place(x=140, y=15)
def addlevel(self):
self.val1 = self.driverlevel_ent.get()
if self.val1 == "":
tkinter.messagebox.showinfo("Warning", "Please Enter a Value")
else:
sql = "INSERT INTO 'driverlevel' (Level,) VALUES(?,)"
c.execute(sql, (self.val1))
conn.commit()
tkinter.messagebox.showinfo("Success", "Driver Level Added")
# objects
root = Tk()
b = Application(root)
root.geometry("200x60+0+0")
root.resizable(False, False)
root.title("Add Driver Level")
root.mainloop()
**error message when saving**
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/*****/PycharmProjects/******/driverlevel.py", line 41, in addlevel
c.execute(sql, (self.val1))
sqlite3.OperationalError: near ")": syntax error
不知道如何克服这一点
谢谢,Josh您在
级别之后插入了,
,以及?,
,假设是这个“插入到'driverlevel'(级别)值(?)
,然后在(self.val1,)的末尾插入逗号,
,将其视为元组,因为您可以将数据作为元组插入sqlite3
也可以通过这种方式插入数据
sql = "INSERT INTO driverlevel (Level) VALUES(?,)"
conn = sqlite3.connect("RMS.db")
c = conn.cursor()
c.execute("INSERT INTO driverlevel(level)VALUES(?)", (self.val1,))
conn.commit()
tkinter.messagebox.showinfo("Success", "Driver Level Added")
确保插入后关闭了数据库
完整代码
from tkinter import *
import sqlite3
import tkinter.messagebox
# connect to database
conn = sqlite3.connect("RMS.db")
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS driverlevel(level text, age text)")
conn.commit()
conn.close()
# tkinter window
class Application:
def __init__(self, master):
self.master = master
# Creating frames in the master
self.left = Frame(master, width=200, height=60, bg="grey")
self.left.pack(side=LEFT)
self.right = Frame(master, width=0, height=0, bg="grey")
self.right.pack(side=RIGHT)
# labels for window
self.driverlevel = Label(self.left, text="Driver Level:", font="calabri 12 bold", fg="white", bg="grey")
self.driverlevel.place(x=1, y=2)
# Entries for left window
self.driverlevel_ent = Entry(self.left, width=20)
self.driverlevel_ent.place(x=5, y=27)
# Save Button
self.submit = Button(self.left, text="Add", font="calabri 12 bold", fg="white", bg="grey", command=self.addlevel)
self.submit.place(x=140, y=15)
def addlevel(self):
self.val1 = self.driverlevel_ent.get()
if self.val1 == "":
tkinter.messagebox.showinfo("Warning", "Please Enter a Value")
else:
#sql = "INSERT INTO driverlevel (Level) VALUES(?,)"
# conn = sqlite3.connect("RMS.db")
# c = conn.cursor()
# c.execute("INSERT INTO driverlevel(level)VALUES(?)", (self.val1,))
# conn.commit()
# tkinter.messagebox.showinfo("Success", "Driver Level Added")
conn = sqlite3.connect("RMS.db")
c = conn.cursor()
sql = "INSERT INTO 'driverlevel' (Level) VALUES(?)"
c.execute(sql, (self.val1,))
conn.commit()
conn.close()
tkinter.messagebox.showinfo("Success", "Driver Level Added")
# objects
root = Tk()
b = Application(root)
root.geometry("200x60+0+0")
root.resizable(False, False)
root.title("Add Driver Level")
root.mainloop()
@JJPS如果这解决了问题,请确保勾号符号作为未来编码人员的参考。