欢迎访问宙启技术站
智能推送

在wxPython中使用SQLite数据库

发布时间:2023-12-24 02:31:14

wxPython是一个开源的Python库,用于创建内嵌Python的图形用户界面(GUI)。SQLite 是一个轻量级的嵌入式数据库引擎,适用于各种规模项目。将wxPython与SQLite结合使用,我们可以创建一个具有数据库功能的GUI应用程序。

下面是一个简单的使用wxPython和SQLite的示例:

import wx
import sqlite3

class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(None, title="SQLite Example")
        
        # 创建一个数据库连接
        self.conn = sqlite3.connect("mydatabase.db")
        
        # 创建一个游标对象
        self.cursor = self.conn.cursor()
        
        # 创建一个表来存储数据
        self.cursor.execute("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name VARCHAR(100))")
        
        # 创建GUI界面的各个组件
        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)
        
        self.txt_name = wx.TextCtrl(panel)
        vbox.Add(self.txt_name, 0, wx.ALL|wx.EXPAND, 5)
        
        btn_add = wx.Button(panel, label="Add")
        vbox.Add(btn_add, 0, wx.ALL, 5)
        
        btn_show = wx.Button(panel, label="Show")
        vbox.Add(btn_show, 0, wx.ALL, 5)
        
        self.lst_names = wx.ListBox(panel)
        vbox.Add(self.lst_names, 1, wx.ALL|wx.EXPAND, 5)
        
        panel.SetSizer(vbox)
        
        # 绑定事件处理函数
        btn_add.Bind(wx.EVT_BUTTON, self.on_add)
        btn_show.Bind(wx.EVT_BUTTON, self.on_show)
        
    def on_add(self, event):
        # 从文本控件中获取输入的名称
        name = self.txt_name.GetValue()
        
        # 向数据库插入数据
        self.cursor.execute("INSERT INTO mytable (name) VALUES (?)", (name,))
        self.conn.commit()
        
        # 清空文本控件
        self.txt_name.SetValue("")
        
    def on_show(self, event):
        # 查询数据库中的数据
        self.cursor.execute("SELECT name FROM mytable")
        names = self.cursor.fetchall()
        
        # 清空列表框
        self.lst_names.Clear()
        
        # 在列表框中显示查询结果
        for name in names:
            self.lst_names.Append(name[0])
            
    def __del__(self):
        # 关闭数据库连接
        self.cursor.close()
        self.conn.close()
        
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

在这个例子中,我们首先创建一个数据库连接,并使用游标对象创建一个名为mytable的表来存储数据。然后,我们创建了一个简单的GUI界面,包含一个文本框、一个添加按钮、一个显示按钮和一个列表框。

当用户点击添加按钮时,程序将读取文本框中的值,并将该值插入到数据库中。在显示按钮被点击时,程序将查询数据库并在列表框中显示结果。

在使用完数据库之后,我们需要在__del__方法中关闭数据库连接,以释放资源。

这只是一个基础的例子,你可以基于这个示例进行扩展,添加更多的功能和界面元素。同时,你还可以使用wxPython的其他功能和SQLite的其他功能,以满足你的具体需求。