python中pandas模块(merge方法)实现SQL Server中的表关联join
2018-02-03 09:42
603 查看
python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块
基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。
建表
一、SQL Server中的表关联 join
用sql来实现,非常简单,直接用join把3个表关联起来就可以了:
二、python中的集合关联
输出结果:
基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。
建表
--学生 CREATE TABLE student ( sid INT , sname NVARCHAR(32) , sage INT , ssex NVARCHAR(8) ) --课程表 CREATE TABLE course ( cid INT , cname NVARCHAR(32) , tid INT ) --成绩表 CREATE TABLE sc ( s# INT, c# INT, score INT ) CREATE TABLE teacher ( tid INT , tname NVARCHAR(16) ) insert into Student select 1,N'刘一',18,N'男' union all select 2,N'钱二',19,N'女' union all select 3,N'张三',17,N'男' union all select 4,N'李四',18,N'女' union all select 5,N'王五',17,N'男' union all select 6,N'赵六',19,N'女' insert into Teacher select 1,N'叶平' union all select 2,N'贺高' union all select 3,N'杨艳' union all select 4,N'周磊' insert into Course select 1,N'语文',1 union all select 2,N'数学',2 union all select 3,N'英语',3 union all select 4,N'物理',4 insert into SC select 1,1,56 union all select 1,2,78 union all select 1,3,67 union all select 1,4,58 union all select 2,1,79 union all select 2,2,81 union all select 2,3,92 union all select 2,4,68 union all select 3,1,91 union all select 3,2,47 union all select 3,3,88 union all select 3,4,56 union all select 4,2,88 union all select 4,3,90 union all select 4,4,93 union all select 5,1,46 union all select 5,3,78 union all select 5,4,53 union all select 6,1,35 union all select 6,2,68 union all select 6,4,71
一、SQL Server中的表关联 join
用sql来实现,非常简单,直接用join把3个表关联起来就可以了:
SELECT s.sname, c.cname, sc.score FROM sc INNER JOIN student s ON sc.sid = s.sid INNER JOIN course c ON sc.cid = c.cid
二、python中的集合关联
# -*- coding:gbk -*- import pymssql as pm from pandas import DataFrame #行列结构 import pandas as pd conn = pm.connect(host='localhost',user='sa',password='momogua',database='test') cur = conn.cursor() #获取sc表的数据,格式化 cur.execute('select * from sc') sc = cur.fetchall() dsc = DataFrame(sc,columns = ['sid','cid','score']) #获取student表的数据,格式化 cur.execute('select sid,sname from student') student = cur.fetchall() dstudent = DataFrame(student,columns=['sid','sname']) #获取course表的数据,格式化 cur.execute('select cid,cname from course') course = cur.fetchall() dcourse = DataFrame(course,columns=['cid','cname']) #print dsc #print dstudent #print dcourse #合并sc表与student表 sc_student = pd.merge(dsc,dstudent, left_on='sid',right_on='sid',how='inner') #在把合并的结果,和course表合并 sc_student_course = pd.merge(sc_student,dcourse,left_on='cid',right_on='cid',how='inner') #取sname,cname,score 3列 r = sc_student_course[['sname','cname','score']] print r
输出结果:
>>> ================================ RESTART ================================ >>> sname cname score 0 刘一 语文 56 1 钱二 语文 79 2 张三 语文 91 3 王五 语文 46 4 赵六 语文 35 5 刘一 数学 78 6 钱二 数学 81 7 张三 数学 47 8 李四 数学 88 9 赵六 数学 68 10 刘一 英语 67 11 钱二 英语 92 12 张三 英语 88 13 李四 英语 90 14 王五 英语 78 15 刘一 物理 58 16 钱二 物理 68 17 张三 物理 56 18 李四 物理 93 19 王五 物理 53 20 赵六 物理 71
相关文章推荐
- python中pandas模块(join方法)实现SQL Server中的表关联join
- python中pandas模块实现SQL Server中的select
- python使用smtplib模块通过gmail实现邮件发送的方法
- 用python实现从1加到100的三种方法: for循环,while循环,导入模块法
- Python的Threading模块的Thread对象的join方法
- Python实现动态加载模块、类、函数的方法分析
- python使用smtplib模块通过gmail实现邮件发送的方法
- Python THREADING模块中的JOIN()方法深入理解
- python基础-Process创建进程、join方法、实现ftp多进程
- python的random模块及加权随机算法的python实现方法
- Python编程实现双击更新所有已安装python模块的方法
- Python THREADING模块中的JOIN()方法深入理解
- Python中join()方法的Java实现
- Python基于csv模块实现读取与写入csv数据的方法
- 利用python实现对鼠标的移动点击操作(PyMouse 模块安装方法)
- python利用字典保存配置实现动态调用模块类方法
- python中动态加载模块和类方法实现
- python实现通过pil模块对图片格式进行转换的方法
- python使用easyinstall安装xlrd、xlwt、pandas等功能模块的方法
- python使用fileinput模块实现逐行读取文件的方法