Python 如何在不重复的情况下获取行

Python 如何在不重复的情况下获取行,python,python-2.7,xbmc,Python,Python 2.7,Xbmc,我正在编写python脚本,以便从sqlite3数据库中提取数据 我在数据库中有频道列表,但我在打印频道时遇到问题,因为我在sqlite3数据库中存储了30个频道,我希望一次打印一个频道而不重复 使用此代码: #Pull the data from the database channelList = list() programList = list() database_path = xbmc.translatePath(os.path.join('special://userdata/a

我正在编写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
   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
结果:

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: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
我想得出这样的结果:

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: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: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
当我使用此代码时:

#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
   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

可以通过以下两种方式之一更改SQL查询来实现此目的:

SELECT DISTINCT channel FROM programs WHERE channel
或:


我个人更喜欢前者,因为
groupby
包含许多其他对组织数据有用的功能。我不会仅仅依靠它来删除重复项,但选项是存在的。

可能会在SQL语句中抛出一个DISTINCT。像
从节目中选择不同的频道,其中频道
非常感谢,我可以看到我可以一次打印一个频道而不重复,但有一个频道缺失,称为
abc系列
。你知道它为什么不见了吗?请查看我的更新帖子。@user3853587我看到您使用的是
分组依据
,如果使用
不同的
,会发生什么?我得到相同的结果。但是,我已经删除了代码
row=cur.fetchone()
,现在它正在工作。我可以打印完整的频道列表,非常感谢您的帮助。非常感谢!