python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块
基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。
建表可以参考:python中pandas的集合关联(merge) 与SQL Server中表关联join的对比
SQL Server中用join实现表的关联,在python中pandas的merge可以实现表关联,此外,还可以用join来实现。
用pandas的join来实现关联,要比merge来的复杂,因为join的功能相对较弱,默认情况下是两个数据的index的关联,
通过参数on 可以指定用字段 和另一个集合的index进行关联。
# -*- 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'])
dstudent.set_index('sid',inplace=True) #把sid设置为index
#获取course表的数据,格式化
cur.execute('select cid,cname from course')
course = cur.fetchall()
dcourse = DataFrame(course,columns=['cid','cname'])
dcourse.set_index('cid',inplace=True) #把cid设置为index
#合并sc表与student表,把sc的sid列与student的index进行关联
sc1 = dsc.join(dstudent,on='sid',how='inner')
#在把合并的结果,和course表合并 ,把上面结果的cid列 与 course的index进行关联
sc2 = sc1.join(dcourse,on='cid',how='inner')
#取sname,cname,score 3列
r = sc2[['sname','cname','score']]
#按照索引排序,就地排序
r.sort_index(inplace=True)
print r