我正在使用我的python脚本从sqlite3数据库中提取数据。
我有数据库中的频道列表,但我打印频道有问题,因为我在sqlite3数据库中存储了30个频道,我想一次打印一个频道而不重复它。
使用此代码:
#Pull the data from the database
channelList = list()
programList = list()
database_path =
xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide',
'source.db'))
if os.path.exists(database_path):
#get the channels list
cur.execute('SELECT channel FROM programs WHERE channel')
row = cur.fetchone()
for row in cur:
channel = row[0].encode('ascii')
#channelList.append(channel)
print channel
结果:
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
16:23:14 T:3280 NOTICE: 103 CNN USA
我想这样做结果:
16:23:14 T:3280 NOTICE: 101 ABC FAMILY
16:23:14 T:3280 NOTICE: 102 CBS
16:23:14 T:3280 NOTICE: 103 CNN USA
编辑:有一个频道缺失:
16:47:21 T:2196 NOTICE: 102 CBS
16:47:21 T:2196 NOTICE: 103 CNN USA
16:47:21 T:2196 NOTICE: 105 ESPN USA
16:47:21 T:2196 NOTICE: 106 Fox News
16:47:21 T:2196 NOTICE: 107 Animal Planet
16:47:21 T:2196 NOTICE: 108 USA Network
16:47:21 T:2196 NOTICE: 110 SPIKE
16:47:21 T:2196 NOTICE: 111 BRAVO USA
16:47:21 T:2196 NOTICE: 112 BRAVO1
16:47:21 T:2196 NOTICE: 113 BRAVO2
16:47:21 T:2196 NOTICE: 114 BRAVO3
16:47:21 T:2196 NOTICE: 115 BRAVO4
16:47:21 T:2196 NOTICE: 116 BRAVO5
16:47:21 T:2196 NOTICE: 117 BRAVO6
16:47:21 T:2196 NOTICE: 118 BRAVO7
当我使用此代码时:
if os.path.exists(database_path):
#get the channels list
cur.execute('SELECT channel FROM programs WHERE channel GROUP BY channel')
row = cur.fetchone()
for row in cur:
channel = row[0].encode('ascii')
#channelList.append(channel)
print channel
答案 0 :(得分:1)
您可以通过以下两种方式之一更改SQL查询来完成此操作:
SELECT DISTINCT channel FROM programs WHERE channel
或者:
SELECT channel FROM programs WHERE channel GROUP BY channel
我个人喜欢前者,因为GROUP BY
包含许多对组织数据有用的其他功能。我不会仅仅依靠它来删除重复项,但选项就在那里。