#coding=utf-8 from thrift.transport import TSocket from hbase import Hbase from hbase.ttypes import * import pymysql # 打开hbase数据库连接 transport = TSocket.TSocket('ip', 9090) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = Hbase.Client(protocol) transport.open() #定义列族 cf1 = ColumnDescriptor(name='stuInfo') cf2 = ColumnDescriptor(name='Grades') #建立表结构 try: # 判断表是否存在 tables_list = client.getTableNames() if "courseGrade" in tables_list: #如果表存在则删除重新建立 client.disableTable('courseGrade') client.deleteTable('courseGrade') client.createTable('courseGrade', [cf1, cf2]) else: # 如果不存在,则创建表 client.createTable('courseGrade', [cf1, cf2]) except: print("创建表失败!") # 打开mysql数据库连接 db = pymysql.connect("localhost", "root", "", "courseSel") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() cursor1 = db.cursor() # SQL 查询学生表信息 sqlStu = "SELECT * FROM studentInfo" try: # 执行SQL语句 cursor.execute(sqlStu) # 获取所有记录列表 stuInfo = cursor.fetchall() for row in stuInfo: id = row[0] name = row[1] age = row[2] sex = row[3] #插入Hbase courseGrade表的stuInfo列族 mutations = [Mutation(column="stuInfo:name", value = name), Mutation(column="stuInfo:age", value = str(age)), Mutation(column="stuInfo:sex", value = str(sex))] client.mutateRow('courseGrade', str(id), mutations) #根据学号查询该学生所选课程的相关信息 sqlCourse = "SELECt courseInfo.课程名,gradeInfo.成绩 " "FROM studentInfo,courseInfo,GradeInfo " "WHERe studentInfo.学号=GradeInfo.学号 " "and courseInfo.课程号=GradeInfo.课程号 and studentInfo.学号='%d'" %(id) cursor1.execute(sqlCourse) # 获取所有记录列表 courses = cursor1.fetchall() for course in courses: courseName = course[0] score = course[1] # 插入Hbase courseGrade表的Grades列族 mutations = [Mutation(column="Grades:'%s'"%(courseName), value=str(score))] client.mutateRow('courseGrade', str(id), mutations) result = client.getRow('courseGrade', str(id)) print(result) except Exception as err: print(err) # 关闭数据库连接 transport.close() db.close()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)