我正在开发一个软件,可以在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?
从我可以描述的内容我可能想要做类似的事情,但我不知道如何实现它,它不会包含客户的工作信息。
答案 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中,并允许用户改变它按下按钮即可获得数据。如果您有任何疑问,请发表评论!