从 MySQL 查询设置 CheckListBox
Setting CheckListBox From MySQL Query
我的 wxPython 应用程序有一个 window 和一个显示 MySQL 数据库中保存的所有项目的 CheckListBox。对于选定的员工,应勾选他们参与的项目。我正在尝试使用以下方式勾选方框:-
indices = [i for i in range(len(lst)) if lst[i][0] in prjs]
self.checkListBox1.SetChecked(indices)
其中 lst 是 return 由 cursor.fetchall() 编辑的所有项目的列表,如下所示:-
lst 是 > ((3L, 'Blood pressure'), (1L, 'Cholesterol'), (2L, 'Diabetes'), (6L, 'Exercise'), ( 5L, 'Thyroid'), (4L, 'Weight/BMI')) <
并 prjs 员工参与的项目:-
prjs > ((2L,), (3L,), (6L,)) <
设置索引失败,因为 returned 是一个元组而不是一个值。我显然可以 'mash' prjs 以正确的格式获取它,但是在 MySQL return 或设置索引中是否有更优雅的解决方案?
几个小时后,我设法整理好了它。我第一次尝试将 prjs 从 ((2L,), (3L,), (6L,)) 转换为 (2L, 3L, 6L) 失败,因为当我尝试匹配整数时它以字符串形式结束。
在深入研究列表之后(Python 列表和字典不是我的强项)我想出了:-
prjs = [e for e, in row]
其中 e 是元组的第一个元素,row 是以下结果:-
sql = "SELECT ProjectMembership.idProjectGroup FROM ProjectMembership \
WHERE ProjectMembership.idPersonnel = " + str(PersonnelNo)
cursor.execute(sql)
row = cursor.fetchall()
我的 wxPython 应用程序有一个 window 和一个显示 MySQL 数据库中保存的所有项目的 CheckListBox。对于选定的员工,应勾选他们参与的项目。我正在尝试使用以下方式勾选方框:-
indices = [i for i in range(len(lst)) if lst[i][0] in prjs]
self.checkListBox1.SetChecked(indices)
其中 lst 是 return 由 cursor.fetchall() 编辑的所有项目的列表,如下所示:-
lst 是 > ((3L, 'Blood pressure'), (1L, 'Cholesterol'), (2L, 'Diabetes'), (6L, 'Exercise'), ( 5L, 'Thyroid'), (4L, 'Weight/BMI')) <
并 prjs 员工参与的项目:-
prjs > ((2L,), (3L,), (6L,)) <
设置索引失败,因为 returned 是一个元组而不是一个值。我显然可以 'mash' prjs 以正确的格式获取它,但是在 MySQL return 或设置索引中是否有更优雅的解决方案?
几个小时后,我设法整理好了它。我第一次尝试将 prjs 从 ((2L,), (3L,), (6L,)) 转换为 (2L, 3L, 6L) 失败,因为当我尝试匹配整数时它以字符串形式结束。
在深入研究列表之后(Python 列表和字典不是我的强项)我想出了:-
prjs = [e for e, in row]
其中 e 是元组的第一个元素,row 是以下结果:-
sql = "SELECT ProjectMembership.idProjectGroup FROM ProjectMembership \
WHERE ProjectMembership.idPersonnel = " + str(PersonnelNo)
cursor.execute(sql)
row = cursor.fetchall()