python sqlite3 循环 修改_用Python编辑SQLite的时候,怎样在遍历数据的时候,对数据进行计数,并将计数个数更新在表中?...

想用Python控制SQLite,遍历数据的时候,对相同的数据进行计数并放在SQL的表中。但是我用以下代码运行的时候,相同的数据并没有叠加计数,而是每个数据都在表里单独一行,计数列都是1。请指教

import sqlite3

import urllib.request

url='http://www.pythonlearn.com/code/mbox.txt'

data=urllib.request.urlopen(url).read().decode()

#print (type(data))

conn=sqlite3.connect('email.sqlite')

cur=conn.cursor()

cur.execute('''DROP TABLE COUNTS''')

cur.execute('''CREATE TABLE COUNTS (org TEXT, count INTEGER)''')

for line in data.split('\n'):

#print (line)

if not line.startswith('From'):

continue

words=line.split()

#print (words)

email=words[1]

# print (email)

word=email.split('@')

s=word[0]

#print (s)

cur.execute('SELECT count FROM COUNTS WHERE org = ?',(s,))

try:

count=cur.fetchone()[0]

cur.execute('UPDATE count=count+1 WHERE org = ?',(s,))

except:

cur.execute('''INSERT INTO COUNTS (org,count) VALUES (?,1)''',(s,))

conn.commit()

sqlstr='SELECT org,count FROM COUNTS ORDER BY count DESC LIMIT 10'

for row in cur.execute(sqlstr):

print (str(row[0]),row[1])

cur.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值