当我想从我的tkinter程序中的一个条目中插入数据时,我目前遇到了这样的错误,我不知道这是什么错误,我很难理解这个错误。我不知道这是什么错误,我很难理解这个错误。
from tkinter import *
from tkinter import messagebox as ms
from tkinter import ttk
import sqlite3
from PIL import Image,ImageTk
import datetime
with sqlite3.connect('Gym.db') as db:
c = db.cursor()
c.execute('CREATE TABLE IF NOT EXISTS PaymentInfo (FirstName TEXT, LastName TEXT, CardNumber TEXT NOT NULL, NameCard TEXT NOT NULL, ExpiryDate TEXT NOT NULL, CVC TEXT NOT NULL);')
class main:
def __init__(self,master):
self.master = master
# Some Usefull variables
self.FirstName = StringVar()
self.LastName = StringVar()
self.n_FirstName = StringVar()
self.n_LastName = StringVar()
self.CardNumber = StringVar()
self.NameCard = StringVar()
self.ExpiryDate = StringVar()
self.cvc = StringVar()
self.n_CardNumber = StringVar()
self.n_NameCard = StringVar()
self.n_ExpiryDate = StringVar()
self.n_cvc = StringVar()
def payment_insert(self):
with sqlite3.connect('Gym.db') as db:
c = db.cursor()
sql2 = "INSERT INTO 'PaymentInfo' (FirstName, LastName,CardNumber,NameCard,ExpiryDate,CVC) VALUES (?,?,?,?,?,?)"
c.execute(sql2,(self.n_FirstName.get(),self.n_LastName.get(),self.n_CardNumber.get(),self.n_NameCard.get(),self.n_ExpiryDate,self.n_cvc.get()))
db.commit()
db.close()
Expiry Date TEXT NOT NULL
您的部分 PaymentInfo
建表声明
c.execute('CREATE TABLE IF NOT EXISTS PaymentInfo (FirstName TEXT, LastName TEXT, CardNumber TEXT NOT NULL, NameCard TEXT NOT NULL, Expiry Date TEXT NOT NULL, CVC TEXT NOT NULL);')
是不正确的。
根据插入查询
sql2 = "INSERT INTO 'PaymentInfo' (FirstName, LastName,CardNumber,NameCard,Expiry,CVC) VALUES (?,?,?,?,?,?)"
栏名似乎是 Expiry
.
因此,如果列名为 "Expiry",数据类型为 Date
,那么列的定义应该是这样的。Expiry Date NOT NULL
你可能想转换 self.n_ExpiryDate
变成适当的Python对象,它与Sqlite3兼容。Date
在运行insert查询之前,要先确定格式。
根据问题的编辑更新:
如果列名为 "到期日",数据类型为 "到期日"。TEXT
那么列的定义应该是这样的。"Expiry Date" TEXT NOT NULL
.