【问题标题】:GUI interface for sqlite data entry in PythonPython中sqlite数据输入的GUI界面
【发布时间】:2011-09-24 18:34:36
【问题描述】:

我正在制作一个简单的 sqlite 数据库来存储一些非敏感的客户信息。我对 python+sqlite 非常熟悉,并且更愿意在这个项目中坚持使用这个组合。我想为数据库的数据输入和搜索创建一个简单的 GUI 界面......与 MS Access 提供的非常相似。我希望我的妻子能够轻松地输入/搜索数据,所以 PHPmyadmin 风格的事情是不可能的。

我知道我可以放弃并获得 MS Access,但如果可能的话,我宁愿自己编写代码,这样它就可以在我的计算机 (*nix) 上运行并且很灵活(所以我以后可以将它与网络集成应用程序和我们的智能手机。)

您的开发人员能否推荐任何可以轻松完成此任务的接口/包/等(最好是 pythonic)?

谢谢!

【问题讨论】:

  • 我认为在此处使用 MS-ACCESS 标签没有任何意义,因为那些有 Access 经验的人不会为您提供任何其他帮助。
  • 我谦虚地不同意,因为那些有 MS-ACCESS 经验的人可能希望他们可以选择别的东西,这个问题提供了一些解决方案的框架为此。我自己对 Access 很熟悉,但是,我在这里 :) 最好的

标签: python sqlite user-interface ms-access


【解决方案1】:

由于您对未来与 Web 应用程序的集成感兴趣,您可以考虑使用 Python Web 框架并在您的计算机上本地运行该应用程序,并使用您的 Web 浏览器作为界面。在这种情况下,一个简单的选择是web2py。只需download,解压并运行,您就可以使用基于Web 的IDE (demo) 非常快速地创建一个简单的CRUD 应用程序(如果您真的想保持简单,您甚至可以使用“新建应用程序”向导”(demo)来构建应用程序)。它包含自己的服务器,因此您可以在本地运行您的应用,就像桌面应用一样。

您可以使用 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”的表。它还为“名称”和“电子邮件”字段指定表单验证器,因此每当通过表单填写这些字段时,条目将被验证(“名称”不能已经在数据库中,“电子邮件”必须是有效的电子邮件地址格式)——如果验证失败,表单将显示适当的错误消息(可以自定义)。

DAL 还将自动处理架构 migrations,因此如果您更改表定义,数据库架构将被更新(如有必要,您可以完全关闭迁移或按表关闭迁移)。

一旦你定义了你的数据模型,你就可以使用 web2py 的CRUD 系统来处理所有的数据输入和搜索。只需包含这两行(实际上,它们已经包含在“欢迎”脚手架应用程序中):

from gluon.tools import Crud
crud = Crud(db)

在控制器中,定义以下动作:

def data():
    return dict(form=crud())

这将公开一组预定义的 URL,使您能够在任何表中创建、列出、搜索、查看、更新和删除记录。

当然,如果您不喜欢某些默认行为,有很多方法可以自定义 CRUD 表单/显示,或者您可以使用 web2py 的一些其他 forms functionality 来构建一个完全自定义的界面。而且 web2py 是一个全栈框架,因此随着您的需求扩展(例如,访问控制、通知等),可以很容易地为您的应用添加功能。

注意,web2py 不需要安装或配置,也没有依赖项,因此很容易将您的应用程序分发到其他机器 - 只需压缩整个 web2py 文件夹(其中将包括您的应用程序文件夹)并将其解压缩到另一台机器上.它将在 *nix、Mac 和 Windows 上运行(在 Windows 上,您需要安装 Python 或下载 web2py Windows 二进制文件而不是源版本——Windows 二进制文件包含其自己的 Python 解释器)。

如果您有任何问题,mailing list 非常有帮助且响应迅速。您还可以从现有的web2py applications 中获得一些想法。

【讨论】:

    【解决方案2】:

    我通常使用 GTK+,它有很好的文档 Python bindings

    最大的优势是您可以使用相当直观的 GUI 编辑器 (Glade) 并自动将回调链接到事件(老实说,大多数其他主要图形工具包也有这种可能性,例如 QT,但我的看法是GTK+ 在 Python 社区中得到更广泛的采用)。编辑:Gnome 和许多其他桌面环境也使用 GTK(不过 KDE 使用 QT)。

    也就是说,如果您真正需要的只是从受信任的人那里插入数据,您可以使用已经完成的东西,例如 SQLite manager(它是一个 FireFox 插件)。


    完全替代解决方案:使用django,您可以字面意思通过阅读教程,在几个小时内启动并运行您的应用程序,包括用户身份验证、后端管理界面等等(你的项目正是我所做的,让我的妻子可以将开支计入我们的家庭预算)。

    Django 是用 Python 编写的,您可以使用 SQLite 作为后端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 2011-04-29
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多