Python连接Oracle的多种方式小结!
Python连接Oracle的多种方式小结!
Oracle数据库是一种强大的企业级关系数据库管理系统(RDBMS),而Python是一门流行的编程语言,两者的结合可以提供出色的数据管理和分析能力,本教程将详细介绍如何在Python中连接Oracle数据库,需要的朋友可以参考下。
前言
库/包 | 描述 | 优点 | 缺点 | 使用场景 |
---|---|---|---|---|
oracledb | Oracle 官方 Python 客户端库。 - 官方支持 |
- 直接与 Oracle 数据库交互
- 配置灵活 - 配置可能较为复杂
- 主要用于直接数据库操作,不支持 ORM 需要直接与 Oracle 数据库交互的场景
cx_Oracle Oracle 官方 Python 客户端库。 - 官方支持 - 功能全面
- 适用于多种 Oracle 数据库操作 - 安装和配置较复杂
- 需要手动管理连接和资源 直接数据库操作,支持复杂查询
SQLAlchemy 通用的 SQL 工具包和 ORM,支持多种数据库,包括 Oracle。 - 支持多种数据库 - 提供 ORM 功能,简化数据库操作
- 统一接口 - 学习曲线陡峭
- 对于简单操作可能过于复杂 需要 ORM 支持或跨数据库操作场景
1. SQLAlchemy
推荐使用这个包,写的比较详细:Python中SQLAlchemy库的使用方法分析_python_脚本之家 (jb51.net)
2. oracledb
官方提供的 Python 客户端库,用于连接和操作 Oracle 数据库
是 cx_Oracle 的继任者,并在很多方面进行了改进和优化
- 安装与配置:
pip install oracledb
- Oracle 客户端:需要 Oracle Instant Client
安装路径需要在系统环境变量中配置,或者在代码中指定路径
1
2
|
import oracledb oracledb.init_oracle_client(lib_dir = r "D:\instantclient_21_10" ) |
- 连接数据库:
连接字符串(DSN):可以使用 DESCRIPTION 或 TNS 配置字符串。支持直接的 IP 地址和端口,或使用 TNS 名称
1
|
connection = oracledb.connect(user = 'username' , password = 'password' , dsn = dsn) |
- 执行 SQL 查询:
使用 cursor 对象来执行 SQL 语句
1
2
3
|
cursor = connection.cursor() cursor.execute( "SELECT * FROM my_table" ) results = cursor.fetchall() |
- 事务管理:
提交事务:需要显式地调用 commit(),connection.commit()
回滚事务:需要显式地调用 rollback(),connection.rollback()
错误处理:通过捕获异常来处理数据库操作中的错误
1
2
3
4
5
|
try : # 执行操作 pass except oracledb.DatabaseError as e: print (e) |
- 游标与连接管理:
关闭游标和连接:在完成数据库操作后,需要关闭游标和连接以释放资源
1
2
|
cursor.close() connection.close() |
最终的测试Demo如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import oracledb # 数据库连接信息 dsn = ( "(DESCRIPTION=" "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.197.0.200)(PORT=1521)))" "(CONNECT_DATA=(SERVICE_NAME=prod)))" ) username = 'root' password = 'root' oracledb.init_oracle_client(lib_dir = r "D:\instantclient_21_10" ) # 创建连接 connection = oracledb.connect(user = username, password = password, dsn = dsn) try : # 创建一个游标 cursor = connection.cursor() # SQL 查询语句 sql_query = """ sql语句 """ # 执行查询 cursor.execute(sql_query) # 获取所有结果 results = cursor.fetchall() # 打印结果 for row in results: print (row) except Exception as e: print (e) finally : # 关闭游标和连接 cursor.close() connection.close() |
3. cx_Oracle
Python 中连接 Oracle 数据库的官方库
支持多种 Oracle 数据库功能,并且是 Oracle 官方推荐的客户端库之一
和上面同理,配置一个客户端,讲讲差异之处
特性 | 优点 | 缺点 |
---|---|---|
性能 | 高性能,支持大数据量处理和高并发操作 | - |
功能 | 支持复杂的数据库功能,如绑定变量、批量操作、PL/SQL 存储过程 | - |
官方支持 | 由 Oracle 官方提供和维护,确保兼容性和稳定性 | - |
配置复杂性 | - | 配置 Oracle 客户端和库可能较为复杂 |
库更新频率 | - | 版本更新可能较慢,需关注新版本的兼容性 |
资源管理 | - | 需要手动管理连接和游标,资源管理较为繁琐 |
多线程支持 | 具有良好的多线程支持,可以在多线程环境下高效运行 | - |
最终的测试Demo如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import cx_Oracle # 设置 Oracle 客户端库路径 cx_Oracle.init_oracle_client(lib_dir = r "D:\instantclient_21_10" ) # 连接数据库 dsn = cx_Oracle.makedsn( '10.197.0.200' , 1521 , service_name = 'prod' ) connection = cx_Oracle.connect(user = 'root' , password = 'root' , dsn = dsn) # 执行查询 cursor = connection.cursor() query = """ sql语句 """ cursor.execute(query) results = cursor.fetchall() # 打印结果 for row in results: print (row) # 关闭游标和连接 cursor.close() connection.close() |
到此这篇关于Python连接Oracle的多种方式小结的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论