#导入需要使用到的数据模块 import pandas as pd import cx_Oracle #读入数据 filepath = 'E:\_DataSetcatering_sale.xls' data = pd.read_excel(filepath) #建立数据库连接 db =cx_Oracle.connect('localhost','root','1234',encoding = "UTF-8",nencoding = "UTF-8") #获取游标对象 cursor = db.cursor() #创建数据库,如果数据库已经存在,注意主键不要重复,否则出错 try: cursor.execute('create table catering_sale(num int primary key,date datetime, sale float )') except: print('数据库已存在!') #插入数据语句 query = """insert into catering_sale (num, date, sale) values (%s,%s,%s)""" #迭代读取每行数据 #values中元素有个类型的强制转换,否则会出错的 #应该会有其他更合适的方式,可以进一步了解 for r in range(0, len(data)): num = data.ix[r,0] date = data.ix[r,1] sale = data.ix[r,2] values = (int(num), str(date), float(sale)) cursor.execute(query, values) #关闭游标,提交,关闭数据库连接 #如果没有这些关闭操作,执行后在数据库中查看不到数据 cursor.close() db.commit() db.close() #重新建立数据库连接 db = cx_Oracle.connect('localhost','root','1234','python_anylysis') cursor = db.cursor() #查询数据库并打印内容 cursor.execute('''select * from catering_sale''') results = cursor.fetchall() for row in results: print(row) #关闭 cursor.close() db.commit() db.close()
查找oracle中的数据
import cx_Oracle spmcs_conn = cx_Oracle.connect(用户名,密码,id,encoding = "UTF-8",nencoding = "UTF-8") cur = spmcs_conn.cursor() reCount = cur.execute("select * from zc_zx") print(cur.fetchone()) #取到第一条数据 print(cur.fetchone()) #取到第二条数据 cur.scroll(-1,mode = 'relative') #游标回退1 print(cur.fetchone()) #取到第二条数据 print(cur.fetchone()) #取到第三条数据 cur.scroll(0,mode = 'absolute') #游标回退0 print(cur.fetchone()) #取到第一条数据 print(cur.fetchone()) #取到第二条数据 cur.close() spmcs_conn.close()
上面只是介绍一下fetchone()的用法,实际操作中使用fetchall(),它能将查询到的数据一部取出,如果没有设置,取出数据的格式为列表嵌套列表。