• Oracle-操作【Python-cx_oracle】


    一、cx_oracle

    1 简介

    1. 通过Python扩展模块cx_Oracle访问Oracle数据库
    2. cx_Oracle通常使用 pip 安装
    3. Oracle 客户端库需要单独安装

    2 特点

    1. 支持多个 Oracle 客户端和数据库版本
    2. 执行 SQL 和 PL/SQL 语句
    3. 广泛的 Oracle 数据类型支持,包括大型对象(CLOB 和 BLOB)和 SQL 对象的绑定
    4. 连接管理,包括连接池
    5. Oracle 数据库高可用性功能
    6. 支持 Python 3.6 及更高版本。旧版本的cx_Oracle可以与以前的Python版本一起使用。
    7. 支持 Oracle Client 11.212181921。Oracle 的标准跨版本互操作性允许轻松升级和连接到不同的 Oracle 数据库版本。
    8. 连接到 Oracle 数据库 9.2101112181921(取决于所使用的 Oracle 客户端版本)。
    9. SQL 和 PL/SQL 执行。基础 Oracle 客户端库具有显著的优化功能,包括压缩提取、预提取、客户端和服务器结果集缓存以及具有自动调整功能的语句缓存。
    10. 广泛的 Oracle 数据类型支持,包括大型对象支持(CLOB 和 BLOB)。
    11. JSON 数据类型支持。
    12. 阵列操作可实现高效的 INSERT 和 UPDATE。
    13. 引用光标支持。
    14. 支持可滚动光标。来回浏览查询结果。
    15. 获取 PL/SQL 隐式结果。从 PL/SQL 轻松返回查询结果。
    16. 事务管理。
    17. 特权连接。
    18. 外部身份验证。
    19. 数据库启动和关闭。

    运行实例

    1. # query.py
    2. import cx_Oracle
    3. # Establish the database connection 建立数据库连接
    4. # 连接本地数据库无需加 dsn
    5. # 连接外部数据库时需要 dsn="数据库地址/实例名"(如199.166.5.456/orcl)
    6. # 此处“/”时字符,不是“或”
    7. connection = cx_Oracle.connect(user="hr", password=userpwd,
    8. dsn="dbhost.example.com/orclpdb1")
    9. # Obtain a cursor 获取游标
    10. cursor = connection.cursor()
    11. # Data for binding 绑定数据
    12. manager_id = 145
    13. first_name = "Peter"
    14. # Execute the query 执行查询
    15. sql = """SELECT first_name, last_name
    16. FROM employees
    17. WHERE manager_id = :mid AND first_name = :fn"""
    18. cursor.execute(sql, mid=manager_id, fn=first_name)
    19. # Loop over the result set遍历结果集
    20. for row in cursor:
    21. print(row)

    二、连接Oracle数据库

    1 连接方式

    1. cx_Oracle使用搜索启发式方式动态加载 Oracle 客户端库。
    2. 仅加载找到的组库。
    3. 这些库可以位于 Oracle Instant Client 的安装中、完整的 Oracle Client 安装中,也可以位于 Oracle 数据库安装中(如果 Python 与数据库在同一台计算机上运行)。
    4. Oracle Client 和 Oracle Database 的版本不必相同。

    2 具体的连接操作

    1. connection = cx_Oracle.connect(user="hr", password="hr",dsn="dbhost.example.com/orclpdb1")
    2. #本地连接似乎需要dsn部分
    3. #连接外部数据库时需要dsn部分:例dsn="192.168.3.110/orcl"(数据库地址和名称)

    补充:cx_oracle中的常见错误及解决

    1 数据库连接失败

    1. cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 32-bit Oracle Client library
    2. 此处为找不到32位Oracle客户端
    3. 一般是由于Python、cx_oracle库、Oracle客户端位数不相同造成的
    4. # 在SQL中执行select * from v$version;
    5. # 可用来查询Oracle客户端位数
  • 相关阅读:
    中兴协力NB-IoT部署实验(含复杂项目)
    Python---while循环的执行流程 解释
    基于C语言的词法分析程序的设计与实现
    mall-2-后台开发环境配置
    什么是芯片的启动电压与欠压锁定?电源芯片测试如何助力?
    LeetCode每日一题——667. 优美的排列 II
    Python在地球科学领域中的数据处理、科学计算、数学建模、数据挖掘和数据可视化
    linux基本知识总结和shell的使用
    【前端精进之路】JS篇:第5期 JS引擎线程的执行过程的三个阶段
    自学5个月软件测试找到一个8k的工作,我的学习方式值得你借鉴
  • 原文地址:https://blog.csdn.net/Ly768768/article/details/137952794