将学科相互引用表中的数据,统计出来,做成学科引用次数的矩阵
这一篇有点类似于前面一篇列转行关联矩阵,只是所用到的是mysql作为处理工具,这篇采用的是python来进行处理。
table2格式如下:字段re_sub即引文所在学科,ar_sb即文章所在学科,有这两个字段即可

计算学科引用次数,并将其填充到Excel表格中,做成矩阵形式

import pymysql.cursors
import logging
logging.basicConfig(filename='log.log',format='%(asctime)s -%(name)s-%(levelname)s:%(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',level=logging.DEBUG)def getsubjectcount(connection,subjectA,subjectB) :with connection.cursor() as cursor:# Read a single recordsql = "select count(*) from `table2` where ar_sb=%s and re_sub=%s;"cursor.execute(sql, (subjectA,subjectB))result = cursor.fetchone()return result['count(*)']#读取excel中的学科数据,返回dataArray
def readDataByExcle(inPutFile,Sheet):from openpyxl import load_workbookwb = load_workbook(inPutFile)sheet = wb[Sheet]dataArray = []print('读取数据完毕!')for i in range(1,sheet.max_row+1):subject = sheet["A"+str(i)].valueif subject == None :continuedataArray.append(subject)return dataArray'''
inputData:
outPutFile:输出文件名,例如:'data.xlsx'
'''
def writeDataToExcleFile(inputData,outPutFile):from openpyxl import Workbookwb = Workbook()sheet = wb.activesheet.title = "Sheet1"i= 1for key in inputData.keys():sheet.cell(i,1).value = keyj = 2for item in inputData[key]:sheet.cell(i,j).value =itemj = j+1i = i+1wb.save(outPutFile)print('数据写入完毕!')def doJob():connection = pymysql.connect(host='localhost',user='root',password='root',db='db2',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)try:subjectdata = readDataByExcle('F:/GEV/lda_dir/subject.xlsx','Sheet1')data = {}for subjectA in subjectdata:print(subjectA)data[subjectA] = []for subjectB in subjectdata:count = getsubjectcount(connection,subjectA,subjectB)data[subjectA].append(count)logging.info('data=>'+subjectA+"=>"+str(data[subjectA]))writeDataToExcleFile(data,'F:/GEV/lda_dir/subjectout11.xlsx')   finally:connection.close()doJob()

其中学科名称放在了Excel中,结果如下,表头为手动添加

统计mysql中学科引用表中学科引用次数相关推荐

  1. mysql中如何删除表中int约束,MySQL中的约束,添加约束,删除约束,以及其他修饰

    一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) NOT NULL); 2)通过ALTER 语句 ALTER ...

  2. MySQL数据库在众多表中对表名的查询及预处理存储过程(变量做表名)

    以下的文章主要介绍的是MySQL数据库在众多表中进行表名与字段名的查询的实际操作步骤,以及对实现其查询所要用到的SQL 语句的介绍,还有两个实际解决方案的描述,以下就是文章的主要内容描述. 在MySQ ...

  3. mysql向表中插中文显示,针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav...

    针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav 针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决:java.sql.SQLException: Incorrect ...

  4. mysql新加一列_如何使用mysql在建好的表中添加一列

    本文主要向大家介绍了如何使用mysql在建好的表中添加一列,通过具体的代码向大家展示,希望对大家学习mysql有所帮助. mysql如果想在一个已经建好的表中添加一列 有这样的需求,已经建立的表,随着 ...

  5. MySQL删除或清空表中数据的方法

    原标题:MySQL删除或清空表中数据的方法 要想把MySQL中的数据删除或清空,可以通过两种方法来实现:DELETE语句和TRUNCATE TABLE语句. DELETE语句可以将表中所有记录都删除, ...

  6. mysql check 字段 0_怎么用PHP显示出mysql中 pwn_dingcan_order这个表中 ifcheck 这个字段为0 的这条数据呢。...

    怎么用PHP显示出mysql中pwn_dingcan_order这个表中ifcheck这个字段为0的这条数据呢.这样是显示出全部订单的语句.这么才能只显示这个ifcheck=0的这一条数据呢.< ...

  7. 把Excel表格通过MySql Workbench导入数据库表中的使用总结

    把Excel表格通过MySql Workbench导入数据库表中的使用总结 今天接到一个任务,把excel表中的数据导入到mysql数据库中,通过半个多小时的鼓捣,基本上摸清了里面的门道. 首先,准备 ...

  8. 在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?

    在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据? 原文 http://blog.csdn.net/quou2002/article/details/59650 ...

  9. B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序...

    B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...

最新文章

  1. SFB 项目经验-37-分配公网证书 For SFB 2015-持久聊天服务器(图解)
  2. 四种软件架构演进史,会一种就很牛逼了!
  3. “因人脸识别错误,我被捕了!”
  4. 谷歌开发者机器学习词汇表:纵览机器学习基本词汇与概念
  5. 在Qt中使用C++代码创建界面
  6. Python最实用的25个小技巧
  7. java 泛型 加_Java泛型并将数字加在一起
  8. uCOS-II 学习笔记之任务管理--------任务控制块OS_TCB
  9. web of science上查找相关会议和期刊的论文
  10. 激励机制中的经济学和博弈论模型(2)
  11. 关于双模键盘的模式转化
  12. python爬虫爬取淘宝美食_python爬虫爬取淘宝商品信息
  13. 记一次halo博客ssl证书过期处理过程
  14. 平均年薪50万,学好python程序员到底有多吃香?
  15. python立方根求解_python 二分查找(立方根)
  16. MySQL关系型数据库
  17. 私有云、公共云和混合云的安全性差异和优缺点
  18. 【JZOJ A组省选】词典
  19. jquery.form 异步上传文件(写的不是很好,望大家多海涵)
  20. jQuery 实现音乐导航案例

热门文章

  1. 光线追踪:OptiXSDK optixDynamicGeometry
  2. Ubuntu实用小技巧 Linux中的Terminator终端使用教程
  3. Exception学习笔记
  4. com.mysql.cj.jdbc.driver maven_com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的区别
  5. 解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure(真实有效)
  6. 龙珠激斗服务器维护,‎App Store 上的“龙珠激斗”
  7. Windows Vista 中文版快速一览
  8. volatile and synchronized
  9. html5 游戏不全屏,html5 实现的全屏模式下的问题与解决
  10. 450g吐司烘烤温度_柔软漂亮的吐司,烘烤时间和温度不容忽视,配方揉面发酵也是重点...