繁体   English   中英

在Sqlite3数据库中插入条目值

[英]Inserting Entry values in Sqlite3 database

我正在使用tkinter创建一个货币转换器,作为我大学项目的一部分。 我是python的GUI新手。 我正在尝试将用户在条目(此处为e1)中输入的值插入我的sqlite3数据库(此处为con)的表中,但是即使按照他们在[...]中显示的方式进行操作,我也无法使其正常工作教程。 我收到一个错误,指出提供的绑定数不正确。 当前语句使用1,并且提供了0。 好像我错过了一些重要的事情。 任何帮助将不胜感激。 谢谢!

from tkinter import*
import tkinter as tk
import sqlite3

conn=sqlite3.connect("datavalues.db")
c=conn.cursor()

root=tk.Tk()
tkvar=StringVar(root)
tkvar2=StringVar(root)
convertfrom={'USD', 'INR', 'YEN', 'Pound Sterling', 'CAD'}
tkvar.set('INR')
convertto={'USD', 'INR', 'YEN', 'Pound Sterling', 'CAD'}
tkvar2.set('USD')

class body(Frame):

    def __init__(self,master=None):
        Frame.__init__(self,master)
        self.master=master
        self.init_window()

    def init_window(self):
        self.master.title("Currency Converter")
        self.pack(fill=BOTH,expand=1)
        self.e1=tk.Entry(self)
        self.e2=tk.Entry(self)
        self.b1=tk.Button(self, text="Convert", command=self.data_entry)
        self.b1.pack()
        self.e1.pack()
        self.e2.pack()
        self.a=self.e1.get()
        self.e1.place(x=100,y=1)
        self.e2.place(x=100,y=100)
        popupmenu=OptionMenu(self,tkvar, *convertfrom)
        popupmenu2=OptionMenu(self,tkvar2,*convertto)
        popupmenu.place(x=2,y=1)
        popupmenu2.place(x=2,y=100)
        self.b1.place(x=150,y=150)

    def data_entry(self): #ERROR IN THIS FUNCTION
        c.execute("CREATE TABLE IF NOT EXISTS con(unix REAL)")
        c.execute("INSERT INTO con (unix) VALUES(?)",(self.a)) 
        conn.commit()
        conn.close()

root.geometry("400x300")
app=body(root)
root.mainloop()

原因可能是由于self.a为空。 只需在执行SQL之前将将data_entry(self)设置的行移到data_entry(self)方法中即可。 这样,每次按下该按钮都将读取该条目。 但是您可能应该在其中放置一个try块,以确保self.a不为空。

def data_entry(self): #ERROR IN THIS FUNCTION
    self.a = self.e1.get()
    if len(self.a):
        c.execute("CREATE TABLE IF NOT EXISTS con(unix REAL)")
        c.execute("INSERT INTO con (unix) VALUES(?)",(self.a)) 
        conn.commit()
        conn.close()
     else:
        print("Error, entry has no content")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM