2016-03-08 77 views
0

我的wxPython應用程序有一個帶有CheckListBox的窗口,該窗口顯示MySQL數據庫中保存的所有項目。對於選定的員工,他們參與的項目應打勾。我試圖用打勾的框: -從MySQL查詢設置CheckListBox

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

其中LST如下圖所示的cursor.fetchall()返回的所有項目的列表: -

地表溫度>((3L「 (2L,'Diabetes'),(6L,'Exercise'),(5L,'Thyroid'),(4L,'Weight/BMI'))<

和prjs項目中參與僱員: -

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

設置索引失敗,因爲返回的是元組而非值。我顯然可以'搗碎'prjs以正確的格式獲得它,但是在MySQL返回中還是在設置索引中,是否有更優雅的解決方案?

回答

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()