连接oracle数据库查询与封装调用

1、连接oracle

1.1 安装 cx_Oracle

(1)下载cx_Oracle:
需保证系统版本,python版本,oracle客户端的版本,cx_Oracle的版本的一致性。oracle客户端的版本,cx_Oracle的版本,要与Python版本和位数对应。
Python版本:Python3.4.3 32位;
cx_Oracle的版本:cx_Oracle-5.2-11g.win32-py3.4
oracle客户端的版本:instantclient-basic-win32-11.2.0.1.0;
这里还有三个注意点:
版本位数对应,都是32位;
cx_Oracle和python版本对应,都是3.4;
cx_Oracle和instantclient版本对应,都是11;
(2)查看Python版本:win+R——cmd——python
在这里插入图片描述
(3)安装cx_Oracle:pip install cx-Oracle
或者去官网下载安装:https://pypi.org/project/cx-Oracle/#files
(4)下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
把下载的文件解压,复制oci.dll,oraocci11.dll,oraociei11.dll的3个DLL粘贴到你的python安装目录的Libs/site-packages文件夹下面。

1.2 连接oracle数据库

import cx_Oracle  #导入oracle数据库
class ReadDB:
    # 定义连接对象,类方法
    conn=None
     #指定数据库配置文件
    dsn = open(r'D:\PLSQL Developer\instantclient\instantclient_11_3\NETWORK\ADMIN\tnsnames.ora')
     # 获取连接对象方法封装
    def get_conn(self):
        if self.conn is None:
            self.conn = cx_Oracle.connect(user="登录名",
                                          password="密码password",
                                          dsn="ORACLE_40.31",
                                          encoding="UTF-8")
        return self.conn  # 返回连接对象

2、打印数据库查询结果集

2.1 值嵌入字段名

    def get_sql_one(self, sql,params):
        # 定义游标对象及数据变量
        sursor = None
        data = None
        try:
            # 获取游标对象
            sursor = self.get_cursor()
            # 调用执行方法
            sursor.execute(sql,params)
            # 获取结果
            data = sursor.fetchone()
            #-------输出结果加入字段名
            des=sursor.description # 获取表详情,字段名,长度,属性等
            t=",".join([item[0] for item in des])
            table_head = t.split(',')  # # 查询表列名 用,分割
            dict_result = dict(zip(table_head,data))  # 打包为元组的列表 再转换为字典
            list_result = []
            list_result.append(dict_result)  # 将字典添加到list_result中
            print( "查询结果如下:\n", list_result, end='\n')
        except Exception as e:
            print("get_sql_one error:", e)
        finally:
            # 关闭游标对象
            self.close_cursor(sursor)
            # 关闭连接对象
            self.close_conn()
            # 返回执行结果
            return list_result

在这里插入图片描述

2.2 结果集显示为列表

2.2.1 安装pandas:

pip install --upgrade --user --default-timeout=1500 pandas(python安装目录下)

import pandas
# ------------------------获取所有数据结果集-------------------------
    def get_sql_all(self, sql,params):
        # 定义游标对象及数据变量
        global table_head
        sursor = None
        data = None
        data_count = 0
        try:
            # 获取游标对象
            sursor = self.get_cursor(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值