python编程:创建 SQLite 数据库和表的图形用户界面应用程序

本文主要是介绍python编程:创建 SQLite 数据库和表的图形用户界面应用程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在本文中,我将介绍如何使用 wxPython 模块创建一个图形用户界面(GUI)应用程序,该应用程序允许用户选择 SQLite 数据库的存放路径、数据库名称、表名称,并动态添加字段及其类型。以下是具体的实现步骤和代码示例。
C:\pythoncode\new\sqlitegenerator.py

环境准备

首先,确保你已经安装了 wxPythonsqlite3 模块。你可以使用以下命令安装 wxPython

pip install wxPython
代码实现

下面是完整的代码实现:

import wx
import sqlite3
import osclass SQLiteDBCreator(wx.Frame):def __init__(self, parent, title):super(SQLiteDBCreator, self).__init__(parent, title=title, size=(600, 500))self.panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)# Database Pathhbox1 = wx.BoxSizer(wx.HORIZONTAL)self.db_path_text = wx.TextCtrl(self.panel)db_path_btn = wx.Button(self.panel, label='Select Path')db_path_btn.Bind(wx.EVT_BUTTON, self.on_select_path)hbox1.Add(self.db_path_text, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)hbox1.Add(db_path_btn, flag=wx.ALL, border=5)# Database Namehbox2 = wx.BoxSizer(wx.HORIZONTAL)db_name_lbl = wx.StaticText(self.panel, label="Database Name:")self.db_name_text = wx.TextCtrl(self.panel)hbox2.Add(db_name_lbl, flag=wx.ALL, border=5)hbox2.Add(self.db_name_text, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)# Table Namehbox3 = wx.BoxSizer(wx.HORIZONTAL)table_name_lbl = wx.StaticText(self.panel, label="Table Name:")self.table_name_text = wx.TextCtrl(self.panel)hbox3.Add(table_name_lbl, flag=wx.ALL, border=5)hbox3.Add(self.table_name_text, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)# Fields Listself.fields_panel = wx.Panel(self.panel)self.fields_sizer = wx.BoxSizer(wx.VERTICAL)self.fields_panel.SetSizer(self.fields_sizer)add_field_btn = wx.Button(self.panel, label="Add Field")add_field_btn.Bind(wx.EVT_BUTTON, self.on_add_field)# Create Buttoncreate_btn = wx.Button(self.panel, label='Create Database and Table')create_btn.Bind(wx.EVT_BUTTON, self.on_create_db)# Add to vboxvbox.Add(hbox1, flag=wx.EXPAND)vbox.Add(hbox2, flag=wx.EXPAND)vbox.Add(hbox3, flag=wx.EXPAND)vbox.Add(self.fields_panel, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)vbox.Add(add_field_btn, flag=wx.ALL|wx.CENTER, border=10)vbox.Add(create_btn, flag=wx.ALL|wx.CENTER, border=10)self.panel.SetSizer(vbox)self.Centre()self.Show()def on_select_path(self, event):with wx.DirDialog(self, "Choose database save directory", "", wx.DD_DEFAULT_STYLE) as dirDialog:if dirDialog.ShowModal() == wx.ID_OK:self.db_path_text.SetValue(dirDialog.GetPath())def on_add_field(self, event):hbox = wx.BoxSizer(wx.HORIZONTAL)field_name_text = wx.TextCtrl(self.fields_panel)field_type_choice = wx.Choice(self.fields_panel, choices=["INTEGER", "TEXT", "REAL", "BLOB"])hbox.Add(field_name_text, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)hbox.Add(field_type_choice, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)self.fields_sizer.Add(hbox, flag=wx.EXPAND)self.fields_panel.Layout()self.panel.Layout()def on_create_db(self, event):db_path = self.db_path_text.GetValue()db_name = self.db_name_text.GetValue()table_name = self.table_name_text.GetValue()if not db_path or not db_name or not table_name:wx.MessageBox('Database path, name, and table name are required', 'Error', wx.OK | wx.ICON_ERROR)returnfields = []for hbox in self.fields_sizer.GetChildren():field_name_text = hbox.GetSizer().GetChildren()[0].GetWindow()field_type_choice = hbox.GetSizer().GetChildren()[1].GetWindow()field_name = field_name_text.GetValue()field_type = field_type_choice.GetString(field_type_choice.GetSelection())if field_name and field_type:fields.append(f"{field_name} {field_type}")if not fields:wx.MessageBox('At least one field is required', 'Error', wx.OK | wx.ICON_ERROR)returndb_full_path = os.path.join(db_path, db_name)try:conn = sqlite3.connect(db_full_path)cursor = conn.cursor()create_table_query = f"CREATE TABLE {table_name} ({', '.join(fields)})"cursor.execute(create_table_query)conn.commit()conn.close()wx.MessageBox('Database and table created successfully', 'Success', wx.OK | wx.ICON_INFORMATION)except sqlite3.Error as e:wx.MessageBox(f"An error occurred: {e}", 'Error', wx.OK | wx.ICON_ERROR)if __name__ == '__main__':app = wx.App(False)frame = SQLiteDBCreator(None, "SQLite Database Creator")app.MainLoop()

功能简介

  1. 选择数据库存放路径:通过点击“Select Path”按钮,用户可以选择数据库文件的存放目录。
  2. 设置数据库名称:用户可以输入数据库名称。
  3. 设置表名称:用户可以输入表名称。
  4. 添加字段:用户可以动态添加任意数量的字段,每个字段包含字段名称和字段类型(从下拉框中选择)。
  5. 创建数据库和表:点击“Create Database and Table”按钮,根据用户输入的信息创建 SQLite 数据库和表。

使用指南

  1. 运行程序后,首先选择数据库文件的存放路径。
  2. 输入数据库名称和表名称。
  3. 点击“Add Field”按钮添加字段,并为每个字段设置名称和类型。
  4. 添加完所有字段后,点击“Create Database and Table”按钮创建数据库和表。

结果如下:

在这里插入图片描述
在这里插入图片描述

总结

通过本篇博客介绍的代码示例,你可以轻松创建一个功能完善的 GUI 应用程序,用于动态创建 SQLite 数据库和表。这不仅提高了用户体验,还简化了数据库管理的流程。如果你有任何问题或建议,欢迎在评论区留言。

这篇关于python编程:创建 SQLite 数据库和表的图形用户界面应用程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024433

相关文章

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤