在日常开发中,我们常常需要快速查看和操作SQLite数据库中的数据。虽然有许多现成的工具可以完成这一任务,但有时你可能想要一个更为简单、可定制的解决方案。在这篇博客中,我将带你一步步构建一个简单的SQLite数据库浏览器,它可以用来列出数据库中的表名、查看表的字段名、编写SQL语句并执行查询操作,并将结果展示在网格中。我们将使用 wxPython
来创建这个图形用户界面。
C:\pythoncode\new\sqliteanalysis.py
全部代码
import wx
import sqlite3
import wx.grid as gridlib
class SQLiteBrowser(wx.Frame):
def __init__(self, *args, **kw):
super(SQLiteBrowser, self).__init__(*args, **kw)
self.InitUI()
self.conn = None
def InitUI(self):
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
self.btn_open = wx.Button(panel, label="Open Database")
self.btn_open.Bind(wx.EVT_BUTTON, self.OnOpen)
hbox1.Add(self.btn_open, flag=wx.LEFT, border=10)
vbox.Add(hbox1, flag=wx.EXPAND | wx.TOP | wx.BOTTOM, border=10)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
self.listbox1 = wx.ListBox(panel)
self.listbox1.Bind(wx.EVT_LISTBOX, self.OnTableSelected)
hbox2.Add(self.listbox1, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
self.listbox2 = wx.ListBox(panel)
self.listbox2.Bind(wx.EVT_LISTBOX, self.OnColumnSelected)
hbox2.Add(self.listbox2, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
vbox.Add(hbox2, proportion=1, flag=wx.EXPAND)
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
self.text_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE)
hbox3.Add(self.text_ctrl, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
self.btn_exec = wx.Button(panel, label="Execute SQL")
self.btn_exec.Bind(wx.EVT_BUTTON, self.OnExecuteSQL)
hbox3.Add(self.btn_exec, flag=wx.LEFT, border=10)
vbox.Add(hbox3, proportion=1, flag=wx.EXPAND)
hbox4 = wx.BoxSizer(wx.HORIZONTAL)
self.grid = gridlib.Grid(panel)
self.grid.CreateGrid(5, 5)
hbox4.Add(self.grid, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
vbox.Add(hbox4, proportion=3, flag=wx.EXPAND)
panel.SetSizer(vbox)
self.SetTitle('SQLite Browser')
self.Centre()
def OnOpen(self, event):
with wx.FileDialog(self, "Open SQLite file", wildcard="SQLite files (*.db)|*.db",
style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileD