python查询帝国cms文章总量

# -*- coding: utf-8 -*-
import pymysql
import time
import json


def runtotal(dbhost,username,password,dbname,tbpre=''):
	print('[running]','链接数据库',dbname)
	class_tbnamer = []
	conn = pymysql.connect(
		host=dbhost,
		user=username,
		password=password,
		database=dbname,
		charset='utf8',
		cursorclass = pymysql.cursors.SSDictCursor,
		)
	cursor = conn.cursor()

	print('[running]','获得存放内容数据表名')
	# 获得存放内容数据表
	tbnamer = []
	rows = cursor.execute('show tables')
	for d in cursor.fetchall():
		for k,tb in d.items():
			# print(tb)
			nr = tb.split('_')
			if len(nr) != 4:
				continue
			# 识别数据表
			if nr[1]=='ecms' and nr[3]=='index':
				if tbpre and nr[0]!=tbpre:continue
				tbnamer.append(tb)	

	total = 0
	print('[running]','获得存放内容数据表名:',len(tbnamer))
	for tbname in tbnamer:
		cursor.execute('select count(*) from %s;'%tbname)
		count = cursor.fetchone()
		count = count['count(*)'] if count else 0
		print('[running]',tbname,count)
		total += count

	print('[running]','断开数据库',dbname)
	cursor.close()
	conn.close()
	return total

def runtotals(d,username,password,dbhost='localhost',filename=''):
	if not d:
		return
	print('[running]','开始运行',len(d))
	data = []
	for v in d :
		domain = v['domain']
		dbname = v['dbname']
		if not 'tbpre' in v.keys():v['tbpre'] = ''
		tbpre = v['tbpre']

		total = runtotal(dbhost,username,password,dbname,tbpre)
		print('[running]',domain,total)
		data.append({
			'domain':domain,
			'value':total,
			})
		print('')

	print('[running]',json.dumps(data))
	if filename:
		print('[running]','执行保存文件',filename)
		# 保存新数据
		with open(filename, 'w', encoding='utf-8') as filejson:
			filejson.write(json.dumps(data))

if __name__ == '__main__':

	date = time.strftime("%Y%m%d",time.localtime(int(time.time())))
	filename = 'count.%s.json'%date
	username = 'root'
	password = '2008'
	d =[
				{'domain':'www.baidu.com','dbname':'baidu','tbpre':'phome'},
				{'domain':'m.qq.com','dbname':'qq'},
	]
	runtotals(d,username,password,filename=filename)

	# 脚本说明:
	# 	python3.6版本
	# 	需要安装pymysql模块 pip install pymysql
	# 	默认查询帝国cms表,不通用其他cms,如有需要修改识别数据表即可
	# 	暂不支持分表,可修改识别

	# 	parama  d   array   查询域名数组
	# 		d =[
	# 			{'domain':'www.baidu.com','dbname':'baidu','tbpre':'phome'},
	# 			{'domain':'m.qq.com','dbname':'qq'},
	# 		]
	# 		domain	对应域名	必须
	# 		dbname 	对应数据库名	必须
	# 		tbpre		对应表前缀	可选
	# 	parama  username	string  数据库用户名
	# 	parama  password	string  数据库用户密码
	# 	parama  dbhost	string  数据库主机地址 默认 localhost
	# 	parama  filename  string  保存文件名称

	# by 薛一 
	# 2018-07-13
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值