如何计算数据库中行的值

How to count the values of rows in a database

我正在编写我的 python 脚本,因为我想创建变量来计算值以找出数据库中有多少 69 行,然后计算这些值找出我有多少个值才能形成一个值。

这里举例:当我连接到一个数据库和select一个频道时,我想得到以1开头的行值,然后加上69使它成为[=16] =].再加一个69做成139,再加一个69做成208等等,我想每次都继续加起来,直到得到最后69行在数据库中。然后我想在每个值上计算我有多少值才能获得单个值。

示例:

>> 1
>> 70
>> 139
>> 208
>> 277
>> 346
>> 415
>> 484
>> 553
>> 622

我指望这些值 170139 208277346415484553622 共计 10 个。那是因为我的值 1 是我得到的一个值,我的值 70 是我得到的两个值,依此类推。

代码如下:

#get the programs list
cur = con.cursor()
cur.execute('SELECT channel FROM programs')
programs = cur.fetchall()
start_pos = 375    # indent for first program
channels_index =  69 + 1   # count how many rows I have got in a database

我想计算这 69 行来做一个值,因为我在数据库中存储的每个数据都有 69 行。

这是我的数据库的示例:

ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
ABC FAMILY
...etc until 69
CBS
CBS
CBS
CBS
CBS
CBS
CBS
CBS
CBS
CBS
...etc until 69

编辑:这是来自数据库的频道列表:

18:29:44 T:5836  NOTICE: [(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), (u'101 ABC FAMILY ',), 
(u'101 ABC FAMILY ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), (u'102 CBS ',), 
(u'102 CBS ')]

结果如下:

 <<<<<<<< the value `1` is missing
19:43:08 T:6208  NOTICE: 70
19:43:08 T:6208  NOTICE: 139
19:43:08 T:6208  NOTICE: 208
19:43:08 T:6208  NOTICE: 277
19:43:08 T:6208  NOTICE: 346
19:43:08 T:6208  NOTICE: 415
19:43:08 T:6208  NOTICE: 484
19:43:08 T:6208  NOTICE: 553
19:43:08 T:6208  NOTICE: 622
19:43:08 T:6208  NOTICE: 691
19:43:08 T:6208  NOTICE: 760
19:43:08 T:6208  NOTICE: 829
19:43:08 T:6208  NOTICE: 898
19:43:08 T:6208  NOTICE: 967
19:43:08 T:6208  NOTICE: 1036
19:43:08 T:6208  NOTICE: 1105 <<<<<<<< not needed

你能帮我计算一下数据库中从第 1 行开始的行然后每次加起来 69 直到我得到数据库中的最后 69 行然后计算我有多少个值必须做单值?

你应该从不 从 table 中获取全部,然后在 Python 中迭代它,如果你可以避免的话。使用 SQL 聚合。它将 快很多

例如:

#Initialize a running total. For some reason you asked to initialize it to one, but note that that will give you a final total that is 1 greater than the number of 
running_total = 1
#Query will select the sum of
query = "SELECT Channel, COUNT(*) AS number_of_programs FROM Programs GROUP BY Channel"
cursor = con.cursor()
cursor.execute(query)
for result in cursor.fetchall():
    print running_total
    #Add the number of programs for the channel to your running total. You access it as the second element of the returned record, because we selected number_of_programs second in our query.
    print 'Channel {0} has {1} programs. Current program count is {2}'.format(result[0],result[1],running_total)
    running_total += result[1] 

当然,如果你真的知道每个频道恰好有69个节目,你可以直接写。

query = "SELECT COUNT(*) FROM programs"
cursor.execute(query)
x = cursor.fetchone()[0]
running_total = 1 #Again, you want to start counting at 1 for some reason
while running_total < x:
    running_total += 69
    print running_total

但我认为这不是你想要的。