从MySQL查询设置CheckListBox

时间:2016-03-08 12:45:21

标签: python mysql wxpython

我的wxPython应用程序有一个带有CheckListBox的窗口,它显示MySQL数据库中保存的所有项目。对于选定的员工,应勾选他们参与的项目。我试图使用以下方法勾选方框: -

indices = [i for i in range(len(lst)) if lst[i][0] in prjs]
self.checkListBox1.SetChecked(indices)

其中lst是cursor.fetchall()返回的所有项目的列表,如下所示: -

我是> ((3L,'血压'),(1L,'胆固醇'),(2L,'糖尿病'),(6L,'运动和# 39;),(5L,'甲状腺'),(4L,'体重/ BMI'))<

并为参与的员工项目提供服务: -

prjs> ((2L,),(3L,),(6L,))<

设置索引失败,因为返回了元组而不是值。我显然可以“捣碎”#39; prjs以正确的格式获得它但是在MySQL返回或设置索引时是否有更优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

几个小时后,我设法让它排序。我第一次尝试将prjs从((2L,),(3L,),(6L,))转换为(2L,3L,6L)失败,因为当我尝试匹配整数时它最终成为一个字符串。

在对列表进行更多研究之后(Python列表和词典不是我的优点)我提出了: -

prjs = [e for e, in row]

其中e是元组的第一个元素,行是以下结果: -

sql = "SELECT ProjectMembership.idProjectGroup FROM ProjectMembership \
    WHERE ProjectMembership.idPersonnel = " + str(PersonnelNo)
cursor.execute(sql)
row = cursor.fetchall()