编译python为可执行文件遇到的问题:使用python-oracledb连接oracle数据库时出现错误:DPY-3010
错误原文:
DPY-3010: connections to this database server version are not supported by python-oracledb in thin mode
connection=create_engine("oracle+oracledb://user:password@host:post/dbname")
oracledb.init_oracle_client() 来启用厚模式。
因为是企业的正式数据库,我不想造成太大风险,所以我不升级数据库版本:
要获得更新的Oracle 数据库 XE 版本,请参阅 https://www.oracle.com/au/database/technologies/xe-downloads.html
我在导入oracledb后引入了下面的厚模式,但编译后仍会有DPY-3010的报错
import oracledb oracledb.init_oracle_client(lib_dir=r"C:\Oracle\Instant Client\bin")
C:\Oracle\Instant Client\bin 是oracle安装的主目录,我是从我本机的PL/SQL工具的首选项中查到的。这是连接oracle数据库的即时客户端工具,每台电脑安装的位置都有可能不一样。
我后来经过反复验证和阅读Python-oracledb手册发现create_engine("oracle+oracledb...在用法中已弃用。
所以我采用了连接池的方式实现了功能。完整代码如下:
import oracledb oracledb.init_oracle_client(lib_dir=r"C:\Oracle\Instant Client\bin") # 针对oracle11.2的老版本需要采用这种厚模式
# 使用连接池的方法,目的是可以提高数据库的性能
# 初始化连接
pool = oracledb.create_pool(user="user", password='password', dsn="host:post/dbname",
min=2, max=5, increment=1) # Acquire 连接到池
oapool = pool.acquire()
# 使用连接池
with oapool.cursor() as cursor:
for result in cursor.execute("select * from test"):
print(result) # 释放连接池
pool.release(oapool) # 关闭连接池
pool.close()
编译成可执行文件时,我也走了很多弯路。
首先是pyinstaller工具,因为对于一些第三方包以及oracledb依赖环境不能一起打包,导致编译后放在其他电脑上没有依赖环境无法运行,这里我走了很多弯路,pyinstaller是有点坑。
经过摸索我安装并测试使用了cxfreeze工具,目前基本可以满足依赖环境的一起打包。cmd命令如下:
cxfreeze main.py --target-dir dist --base-name="win32gui"
引导主程序:main.py
新建dist文件夹并将最终main所依赖程序打包在该目录下:--target-dir dist
隐藏cmd控制台的参数:--base-name="win32gui"
cxfreeze安装完成后在python安装目录的Scripts下应该有下面三个文件:

cxfreeze我用的是目前最新的版本6.16
cxfreeze 6.16.0-dev2 Copyright (c) 2020-2023 Marcelo Duarte.
安装成功后会在Scripts生成最下面两个文件。
第一个文件是我直接从https://download.lfd.uci.edu/pythonlibs/archived/cx_Freeze-6.11.1-cp310-cp310-win_amd64.whl下好放在Scripts下的。
命令行下运行cxfreeze-h可以看的相关参数和版本号。cxfreeze安装方法我会在下一篇文章里做一下总结。
参考链接:https://www.52dianzi.com/category/article/1dd154d83d77de2073abfc71b32b9aa0.html
编译python为可执行文件遇到的问题:使用python-oracledb连接oracle数据库时出现错误:DPY-3010的更多相关文章
- Python + cx_Orcale 连接Oracle数据库
这是我在使用python连接Oracle数据库时遇到的问题.在此做一下总结. 1.pip install cx_Oracle 2.然后还需要在下载一个数据库客户端工具instantclient-bas ...
- Python 连接 Oracle数据库
1.环境设置 [root@oracle ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@oracle ~]# python - ...
- Python 连接Oracle数据库
连接:python操作oracle数据库 python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...
- 【python】python连接Oracle数据库
python连接Oracle数据库 查看Oracle版本 select * from v$version 下载对应版本的InstantClient 下载网址 InstantClient 1.解压Ins ...
- python——连接Oracle数据库
前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...
- python 连接oracle 数据库
我们在测试中可能需要对oracle 数据库进行操纵,比如这样一个场景,在往oracle 里面插数据的同时,另一个工具从里面读,如何能保证读出来的数据是有顺序的,即:先插入进去的先读出来,根据这个场景们 ...
- Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库
最近所写的代码中需要用到python去连接MySql数据库,因为是用PyQt5来构建的GUI,原本打算使用PyQt5中的数据库连接方法,后来虽然能够正确连接上发现还是不能提交修改内容,最后在qq交流群 ...
- python 3.x 安装问题及连接oracle数据库
最近有用到python去处理一些问题,发现现在3已出来,遂用直接下3.7使用 发现问题还是有一点的 1. pip 会出现ssl问题 Could not install packages due to ...
- Python连接oracle数据库 例子一
step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...
- python连接oracle数据库报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "解决方案
操作系统,python3.5, oracle_11, 均为64位:plsql 正常连接. 也顺利安装了cx_oracle 6.3,但是python进行连接的时候就会报错"DatabaseEr ...
随机推荐
- 前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩
前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin? ...
- 【神经网络】基于GAN的生成对抗网络
目录 [神经网络]基于GAN的生成对抗网络 随着深度学习的快速发展,神经网络逐渐成为人工智能领域的热点话题.神经网络是一种模仿人脑计算方式的算法,其通过大量数据和复杂的计算模型,能够实现复杂的任务和预 ...
- CentOS 7 下/etc/ssh/sshd_config 文件解释
CentOS 7 下/etc/ssh/sshd_config 文件详解 SSH由客户端和服务端的软件组成,在客户端可以使用的软件有SecureCRT.putty.Xshell等,而在服务器端运行的是一 ...
- Blazor前后端框架Known-V1.2.3
V1.2.3 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Gith ...
- SaaS软件工程师成长路径
背景 SaaS软件工程师的成长需要循序渐进,和SaaS业务一样有耐心.SaaS工程师需要在"业务"."技术"."管理"三个维度做好知识储备. ...
- 【Dotnet 工具箱】推荐一个使用 C# 开发的轻量级压测工具
你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用! 轻量级压测工具 LoadTestToolbox 是一个使用 C# 开发的轻量级压测工具,基于 .NE ...
- 2022-02-08 IValueConverter和StringFormat
主页 后台 stringFormat
- Angular: Error: NG0100: ExpressionChangedAfterItHasBeenChecked
错误原因 当变更检测完成后又更改了表达式的值时,Angular就会抛出ExpressionChangedAfterItHasBeenCheckedError 错误,Angular只会在开发模式下抛出此 ...
- [kvm]创建虚拟机
创建虚拟机示例 # 使用iso创建虚拟机 virt-install --virt-type kvm --os-type=linux --name temp_debian11 \ --memory 16 ...
- debian11编译安装freeswitch
前言 环境: 系统版本:debian 11 x86_64 FreeSWITCH版本:1.10.6 安装步骤 安装依赖(安装之前最好换apt软件源为国内的) apt install -y gnupg2 ...