库/包 | 描述 | 优点 | 缺点 | 使用场景 |
---|---|---|---|---|
oracledb | Oracle 官方 Python 客户端库。 - 官方支持 |
推荐使用这个包,写的比较详细:Python中SQLAlchemy库的使用方法分析_python_插件窝 (jb51.net)
官方提供的 Python 客户端库,用于连接和操作 Oracle 数据库
是 cx_Oracle 的继任者,并在很多方面进行了改进和优化
安装与配置:pip install oracledb
Oracle 客户端:需要 Oracle Instant Client
安装路径需要在系统环境变量中配置,或者在代码中指定路径
import oracledb oracledb.init_oracle_client(lib_dir=r"D:\instantclient_21_10")
connection = oracledb.connect(user='username', password='password', dsn=dsn)
cursor = connection.cursor() cursor.execute("SELECT * FROM my_table") results = cursor.fetchall()
connection.commit()
回滚事务:需要显式地调用 rollback(),connection.rollback()
错误处理:通过捕获异常来处理数据库操作中的错误try: # 执行操作 pass except oracledb.DatabaseError as e: print(e)
cursor.close() connection.close()
最终的测试Demo如下:
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()
Python 中连接 Oracle 数据库的官方库
支持多种 Oracle 数据库功能,并且是 Oracle 官方推荐的客户端库之一
和上面同理,配置一个客户端,讲讲差异之处
特性 | 优点 | 缺点 |
---|---|---|
性能 | 高性能,支持大数据量处理和高并发操作 | - |
功能 | 支持复杂的数据库功能,如绑定变量、批量操作、PL/SQL 存储过程 | - |
官方支持 | 由 Oracle 官方提供和维护,确保兼容性和稳定性 | - |
配置复杂性 | - | 配置 Oracle 客户端和库可能较为复杂 |
库更新频率 | - | 版本更新可能较慢,需关注新版本的兼容性 |
资源管理 | - | 需要手动管理连接和游标,资源管理较为繁琐 |
多线程支持 | 具有良好的多线程支持,可以在多线程环境下高效运行 | - |
最终的测试Demo如下:
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的多种方式小结的文章就介绍到这了,更多相关Python连接Oracle内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!