【问题标题】:Speed up SQLite select with Python and wx.ListCtrl使用 Python 和 wx.ListCtrl 加速 SQLite 选择
【发布时间】:2015-07-14 04:25:44
【问题描述】:

我在 Kubuntu 上使用 Python 2.7.5+ 13.10wx 2.8.12.1

我没有大型数据库(大约 3150 行),我只有一个员工表(名字、姓氏、地址、电话、电子邮件)。在我的应用程序中,我将它们存储在SQLite 数据库中,并使用wx.ListCtrl 向用户显示行。

但是,将这样的数据库加载到wx.ListCtrl 需要很长时间(我认为超过 10 秒)。 问题是:有没有可能提高选择速度?

首先,在我的 Python 代码中,我创建了一个表:

def createEmployeesTable(self):
        connection = sqlite.connect(self.dbname)
        try:
            with connection:
                cursor = connection.cursor()
                sql = '''\
                    CREATE TABLE IF NOT EXISTS Employees (
                        ID INTEGER PRIMARY KEY NOT NULL,
                        FIRSTNAME TEXT,
                        LASTNAME TEXT,
                        EMAIL TEXT,
                        ADDRESS TEXT,
                        PHONE TEXT)
                '''
                cursor.execute(sql)
        finally:
            connection.close()

然后,我插入一些员工的数据,最后选择在带有wx.ListCtrl的弹出窗口中显示数据:

def getAllEmployees(self):
        employees = []
        connection = sqlite.connect(self.dbname)
        try:
            with connection:
                cursor = connection.cursor()
                sql = "SELECT firstname, lastname, email, phone, address FROM Employees"
                cursor.execute(sql)
                for (firstname, lastname, email, phone, address, ) in cursor:
                    employees.append(Employee(firstname, lastname, email, phone, address))
        finally:
            connection.close()
        return employees

非常感谢您的帮助。

【问题讨论】:

    标签: python sqlite select wxpython wxwidgets


    【解决方案1】:

    您可能需要使用wx.ListCtrl 的虚拟版本。在documentation中提到如下:

    报表视图的一个特殊情况与列表控件的其他模式完全不同的是一个虚拟控件,其中项目数据(包括文本、图像和属性)由主程序管理并由主程序请求仅在需要时自行控制,从而可以在不消耗太多内存的情况下对数百万个项目进行控制。

    似乎没有太多的例子,但我确实找到了以下内容:

    wxPython 演示中还有一个完整的示例,其中包含近 1,000,000 个项目,因此您一定要检查一下。

    【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多