编译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 ...
随机推荐
- 如何在long-running task中调用async方法
什么是 long-running thread long-running task 是指那些长时间运行的任务,比如在一个 while True 中执行耗时较长的同步处理. 下面的例子中,我们不断从队列 ...
- 基于html2canva jspdf 实现前端页面加水印 并导出页面PDF
基于html2canva jspdf 实现前端页面加水印 并导出页面PDF; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12 ...
- 第一章 : Linux入门
1. 概述 2. Linux 和 Windows 区别 3. Centos 下载地址 网易镜像:http://mirrors.163.com/centos/7/isos ...
- 7. RESTful
1. RESTful简介 REST:Representational State Transfer,表现层资源状态转移. ①资源 资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源 ...
- PostgreSQL 12 文档: SQL 语法
SQL 命令 这部分包含PostgreSQL支持的SQL命令的参考信息.每条命令的标准符合和兼容的信息可以在相关的参考页中找到. 目录 ABORT - 中止当前事务 ALTER AGGREGATE ...
- go 判断文件是否存在,并创建
1 package main 2 3 import ( 4 "fmt" 5 "os" 6 ) 7 8 //判断文件夹是否存在 9 func PathExists ...
- 十 Appium环境搭建(Windows版)
注:appium安装到C盘,node.js安装到C盘 一.安装node.js 1.到官网下载node.js:https://nodejs.org/en/download/ 2.获取到安装文件后,直接双 ...
- P5020 [NOIP2018 提高组] 货币系统 题解
转化为完全背包即可. #include <iostream> #include <cstring> #include <algorithm> using names ...
- 常见的 NoSQL 数据库有哪些?
前言 今天我们来介绍一下工作开发中常见的一些NoSQL数据库及其基本特点.欢迎在评论区留下文章中没有介绍且好用的NOSQL数据库. 什么是NOSQL数据库 非关系型数据库又被称为 NoSQL(Not ...
- 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装
知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装 知识图谱(Knowledge Graph)- Neo4j 5.10.0 CentOS 安装 https:// ...