Python中用于SQLite数据录入的GUI界面
我正在制作一个简单的sqlite数据库,用来存储一些不敏感的客户信息。我对python和sqlite非常熟悉,所以在这个项目中我想继续使用这两者。我想创建一个简单的图形界面,方便输入和搜索数据库里的数据……类似于MS Access提供的那种界面。我希望我的妻子能轻松地输入和搜索数据,所以像PHPmyadmin那样的东西就不考虑了。
我知道我可以直接去买MS Access,但如果可以的话,我更希望自己写代码,这样可以在我的电脑上运行(*nix系统),而且更灵活(以后可以和网页应用以及我们的智能手机整合在一起)。
有没有开发者能推荐一些接口、包等等(最好是python风格的),可以比较轻松地实现这个功能?
谢谢!
2 个回答
我通常使用GTK+,它有很好的文档支持和Python绑定。
最大的好处是你可以使用一个相当直观的图形界面编辑器(Glade),并且可以自动将回调函数链接到事件上(说实话,其他一些主要的图形工具包也有这个功能,比如QT,但我感觉GTK+在Python社区的使用更广泛)。另外,GTK还被Gnome和许多其他桌面环境使用(不过KDE是用QT的)。
话虽如此,如果你只需要从一个可信的人那里插入数据,你可以使用一些现成的工具,比如SQLite管理器(这是一个Firefox插件)。
一个完全不同的解决方案是使用Django,你可以真的从阅读教程直接过渡到让你的应用在几个小时内运行起来,包括用户认证、后台管理界面等等(我的项目就是用这个来让我的妻子能够在我们的家庭预算中插入开支)。
Django是用Python写的,你可以使用SQLite作为后端。
既然你对将来与网页应用的整合感兴趣,可以考虑使用一个Python的网页框架,并在你自己的电脑上本地运行这个应用,使用网页浏览器作为界面。在这种情况下,一个简单的选择是web2py。你只需下载,解压缩,然后运行,就可以使用基于网页的IDE(演示)快速创建一个简单的CRUD应用(如果你想保持简单,甚至可以使用“新应用向导”(演示)来构建应用)。它自带一个服务器,所以你可以像使用桌面应用一样在本地运行你的应用。
你可以使用web2py的DAL(数据库抽象层)来定义和创建你的SQLite数据库和表(无需编写任何SQL)。例如:
db = DAL('sqlite://storage.db')
db.define_table('customer',
Field('name', requires=IS_NOT_IN_DB(db, 'customer.name')),
Field('address'),
Field('email', requires=IS_EMAIL()))
上面的代码会创建一个名为storage.db的SQLite数据库,并创建一个叫做'customer'的表。它还为'name'和'email'字段指定了表单验证器,这样每当这些字段通过表单填写时,输入的内容都会被验证('name'不能已经在数据库中,'email'必须是有效的邮箱格式)——如果验证失败,表单会显示相应的错误信息(这些信息可以自定义)。
DAL还会自动处理模式迁移,所以如果你更改了表的定义,数据库模式会相应更新(如果需要,你可以完全关闭迁移或按表单独关闭)。
一旦你定义了数据模型,就可以使用web2py的CRUD系统来处理所有的数据录入和搜索。只需包含这两行代码(实际上,它们已经包含在“欢迎”搭建的应用中):
from gluon.tools import Crud
crud = Crud(db)
然后在控制器中定义以下操作:
def data():
return dict(form=crud())
这将暴露一组预定义的URL,让你能够创建、列出、搜索、查看、更新和删除任何表中的记录。
当然,如果你不喜欢某些默认行为,有很多方法可以自定义CRUD表单/显示,或者你可以使用web2py的其他表单功能来构建一个完全自定义的界面。而且web2py是一个全栈框架,所以随着需求的扩展,给你的应用添加功能会很简单(例如,访问控制、通知等)。
需要注意的是,web2py不需要安装或配置,也没有依赖关系,所以将你的应用分发到其他机器上非常简单——只需将整个web2py文件夹(包括你的应用文件夹)压缩,然后在另一台机器上解压即可。它可以在*nix、Mac和Windows上运行(在Windows上,你需要安装Python,或者下载web2py的Windows二进制版本,而不是源代码版本——Windows二进制版本自带Python解释器)。