我如何在Python数组中列出MySQL数据库

时间:2016-07-04 14:42:45

标签: python mysql database user-interface pyqt4

我正在开发一个软件,可以在MySQL数据库中存储客户端和我们正在为他们做的工作,但是为了让UI按照我想要的方式工作,我需要拥有每个数据库或者数组中的表以便稍后引用。例如

Highlight on Caret Movement

这样我可以在前端UI中引用和显示所有信息 任何其他使用树小部件在PyQt4中显示可视导航的解决方案将不胜感激

我仍然很擅长将MySQL与python一起使用,并且在理解一切方面遇到了一些麻烦,我发现了这个但我不明白

How do I list all tables in all databases in SQL Server in a single result set?

从我可以描述的内容我可能想要做类似的事情,但我不知道如何实现它,它不会包含客户的工作信息。

1 个答案:

答案 0 :(得分:0)

我为一个项目编写了一些非常相似的东西,我在GUI中基本上有一个数据库接口,我允许用户编辑并向数据库添加条目,而无需进入MySql Workbench。

您将需要两个函数与数据库交互,一个用于检索条目,另一个用于执行更改。

这是一些使用SqlAlchemy从数据库中检索信息的代码。

def get_info():
    sql = text('SELECT id, '
                   'serial_number, '
                   'weight_name, '
                   'units, '
                   'nominal, '
                   'customer_name, '
                   'density, '
                   'density_uncert , '
                   'volumetric_exp, '
                   'comment '
                   'FROM weights_external '
                   'ORDER BY id ')

    return self.engine.execute(sql).fetchall()

从名为“weights_external”的表中选择id,序列号,单位等,按id排序。 self.engine.execute(sql).fetchall()返回一个生成器(我想,它可能是一个列表,但我不记得我的头顶对不起!),你可以循环并获得所有结果。在这个例子中,我从这个表中得到10列。如果表有100行,则该函数将返回长度为100的列表,该列表的每个元素将是一个长度为10的列表,每个列表包含一列的信息。

我将这个长度为100的列表存储在一个变量中,并使用此变量为GUI填充QTableWidget。

我有一个单独的按钮来调出一个允许用户添加行的子窗口。此代码与get_info()非常相似,只是您现在正在更新或插入表中(您可以在SqlAlchemy或MySql文档中查看)。基本上,你会有类似的东西:

def push_data(self, data):
    table = self.weights_external.insert()
    self.engine.execute(table.values(id=data['id'],
                                     serial_number=data['serial_num'],
                                     ...
                                     comment=data['comment']))
为了时间和空间,我省略了中间的东西,但是这几段代码应该允许你从数据库中检索数据,把它放到QTableWidget或另一个QObject中,并允许用户改变它按下按钮即可获得数据。如果您有任何疑问,请发表评论!