Python连接Oracle数据库问题解决及Linux服务器操作知识

背景说明 

        最近在做一个视频分析的项目,然后需要将视频分析的数据写入到oracle数据库,直接在服务器上测试数据库连接的时候出现了这个bug提示,自己通过不断的研究探讨,最终把这个问题成功进行了解决,在这里进行一下记录和分享。

数据库测试代码如下(数据库连接信息需要根据自己的实际需要进行改写):

# -*- coding='utf-8' -*-
'''
功能:使用python连接oracle数据库进行测试连接成功与否
'''
import cx_Oracletry:db=cx_Oracle.connect('admin','admin','10.192.168.51:1526/fuck')cursor = db.cursor()db.close()print('数据库连接成功!')
except:print('数据库连接失败!')

也可以参考如下方式:

import cx_Oracle# 连接数据库
def connect_to_database(username, password, host, port, service_name):try:dsn_tns = cx_Oracle.makedsn(host, port, service_name=service_name)connection = cx_Oracle.connect(username, password, dsn_tns)print("数据库连接成功")connection.close()except Exception as e:print("数据库连接失败:", e)# 替换以下参数为您实际的数据库连接信息
username = 'your_username'
password = 'your_password'
host = 'your_host'
port = 1521  # 默认端口为1521
service_name = 'your_service_name'# 调用连接数据库函数
connect_to_database(username, password, host, port, service_name)

在上面的代码中,我们使用了Python的cx_Oracle库来连接到Oracle数据库。您需要根据实际情况,将usernamepasswordhostservice_name参数替换为您的数据库连接信息。在安装完cx_Oracle依赖库后,运行代码弹出的bug如下:cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory".

问题分析及解决

        这个错误表明您的系统缺少Oracle客户端库文件,导致cx_Oracle无法找到所需的库文件。要解决这个问题,您需要安装Oracle客户端库。以下是一些步骤,您可以尝试解决这个问题:

1.下载并安装Oracle Instant Client:您可以从Oracle官方网站下载适用于Linux的Oracle Instant Client。根据您的系统架构(32位或64位)选择适当的版本。解压缩安装包,并将目录添加到您的系统的LD_LIBRARY_PATH环境变量中。例如,您可以将以下行添加到您的.bashrc文件中:

export LD_LIBRARY_PATH=/path/to/instantclient_19_10:$LD_LIBRARY_PATH

确保将/path/to/instantclient_19_10替换为您解压缩安装包的实际路径。

2.设置ORACLE_HOME环境变量:在安装Oracle Instant Client后,您还可以设置一个ORACLE_HOME环境变量,指向Oracle Instant Client的安装目录。例如:

export ORACLE_HOME=/path/to/instantclient_19_10

3.重新运行cx_Oracle安装:一旦设置了Oracle客户端库,您可以重新运行pip install cx_Oracle来安装cx_Oracle库。这时应该能找到所需的Oracle客户端库文件。

        通过这些步骤,通常应该能够解决Cannot locate a 64-bit Oracle Client library错误,并成功安装cx_Oracle库。

资料分享

        自己使用的oracle客户端windows版本和Linux版本程序文件链接如下:

Linux:https://download.csdn.net/download/mzl_18353516147/89161065

windows: https://download.csdn.net/download/mzl_18353516147/89162575

服务器操作

        在windows上添加oracle的系统路径比较容易,在Linux系统上,如果不是很熟悉的话,会有一点小麻烦,自己使用的是centos系统,这里也分享一下自己的经验和操作过程。

1.切换用户

        有时候我们登录Linux服务器使用的是远端登录,一般为了安全起见,远端登录不支持使用root账号登录,我们可以使用别的账号登录后切换到root账号,这样方便我们操作。通常可以使用以下几种方式:

1.使用su命令:

  1. 打开终端。
  2. 输入以下命令并按Enter键:
  3. su
    
  4. 输入root账户的密码,然后按Enter键。
  5. 现在您已经切换到root账户。

2.使用sudo命令:

  1. 打开终端。
  2. 输入以下命令并按Enter键:
    sudo su
    
  3. 输入当前用户的密码,然后按Enter键。
  4. 现在您已经切换到root账户。

提醒:使用sudo切换到root账户的方法更为常见,因为它提供了更好的安全性和日志记录。确保在使用root账户时谨慎操作,以免意外删除重要文件或使系统不稳定。 

2.下载和解压客户端文件

        可以在本地登录oracle官网下载相应的oracle客户端程序(最好是直接搜索,通常需要注册oracle账号,一般是邮箱名),上传到服务器目录上,要注意客户端版本和数据库版本的匹配:

 

然后使用下列命令解压缩包: 

unzip oracle_client_package.ziptar -xzvf oracle_client_package.tar.gz

3. 查看当前系统相关的命令

在Linux系统中,您可以使用以下命令来查看当前系统的信息:

1.查看Linux发行版和版本号:

lsb_release -a

2.查看Linux内核版本:

uname -r

3.查看系统架构(32位或64位):

uname -m

4.查看CPU信息:

cat /proc/cpuinfo

5.查看内存信息:

free -h

6.查看硬盘空间:

df -h

7.查看当前登录用户:

who

8.查看系统启动时间:

uptime

这一步的目的主要是通过查看自己系统属性来确定一下自己的服务器系统是ubuntu还是centos,以及内核的相关信息,方便找到最合适的版本。

4.配置oracle系统路径

如果你的oracle客户端文件夹解压路径为/root’,文件夹名字为instantclient_11_2’:

则可以使用如下三行命令进行临时环境变量设置:

export ORACLE_HOME=/root/instantclient_11_2
export PATH=$PATH:$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME

也可以设置永久临时变量:

        要将一个文件夹路径添加到 CentOS 的系统路径中,可以通过修改环境变量 PATH 来实现。以下是在 CentOS 中将一个文件夹路径添加到系统路径的步骤:

1.打开终端,并使用以下命令查看当前系统路径:

echo $PATH

2.确定要添加到系统路径的文件夹路径,假设要添加的路径为 /path/to/your/folder

3.使用以下命令将该文件夹路径添加到系统路径中:

export PATH=$PATH:/path/to/your/folder

请注意,这种添加方式只会在当前终端会话中生效,如果希望永久性地将该路径添加到系统路径中,需要将上述命令添加到 shell 的配置文件中。常用的配置文件包括 ~/.bashrc~/.bash_profile 或 /etc/profile,具体添加方式可以根据您使用的 shell 而定。

4.如果要让修改立即生效,可以执行以下命令使配置文件生效:

source ~/.bashrc

或者直接注销并重新登录系统。

5.最后,可以使用 echo $PATH 命令验证已经成功将文件夹路径添加到系统路径中。

通过以上步骤,您可以在 CentOS 中将一个文件夹路径添加到系统路径中,以便系统能够找到该文件夹中的可执行文件。

5.Linux配置环境变量的文件有哪些 

        在 CentOS 系统中,可以在 /etc/profile 文件中添加全局环境变量,该文件会在用户登录时被加载。另外,可以在用户的个人配置文件中添加环境变量,如 ~/.bash_profile 或 ~/.bashrc 文件。以下是 CentOS 中常见的环境变量配置文件和其作用:

1./etc/profile
/etc/profile 文件是系统范围内的配置文件,用户登录时会加载该文件。可以在该文件中添加全局的环境变量,对所有用户生效。

2./etc/bashrc
/etc/bashrc 文件也是系统范围内的配置文件,用户每次启动新的交互式 Bash shell 时会加载该文件。通常会在该文件中设置系统范围的环境变量和 Bash shell 的配置。

3.~/.bash_profile
~/.bash_profile 文件是当前用户的个人配置文件,用户登录时会加载该文件。可以在该文件中添加个人的环境变量和其他配置。

4.~/.bashrc
~/.bashrc 文件也是当前用户的个人配置文件,每次启动新的交互式 Bash shell 时会加载该文件。通常会在该文件中设置个人的环境变量和 Bash shell 的配置。

如果需要添加全局的环境变量,可以编辑 /etc/profile 或 /etc/bashrc 文件;如果需要添加个人的环境变量,可以编辑 ~/.bash_profile 或 ~/.bashrc 文件。编辑完成后,可以通过 source 命令使配置文件生效,例如:

source /etc/profile

请注意,在编辑配置文件时,请谨慎操作,确保语法正确且不会影响系统的正常运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

701强连通分量(python)

看见题目知道时间复杂度不超过(mlogm)。 这题用强连通分量 Tarjan 算法,强联通:对于任意两个点u和v,u可以到达v,v也可以到达u。这题需要考虑有重边,自环,同样别忘记可能会有两个点u…

Linux 操作系统编译器、静态库、动态库

1、编辑器 1.1、vim的安装 指令:sudo apt-get install vim 1.2 vim的使用 格式:vim 文件名 如果文件存在,只打开,文件不存在,创建并打开 vim的4中模式: 命令模式,插入模式,底行模…

Excel数据处理:高级筛选、查找定位、查找函数(VLOOKUP)

高级筛选 先去选中筛选区域 如果筛选的条件在同一行那么就是且的关系 如果筛选的条件不在同一行那么就是或的关系 查找定位空值 使用VLOOKUP函数

渗透测试入门教程,从零基础入门到精通(非常详细)

目录 什么是渗透测试 渗透测试的重要性 渗透测试的前置技能 开始入门学习路线 什么是渗透测试 渗透测试,通常被视为模拟黑客的一种安全评估行为,其目的在于全面挖掘目标网站或主机的潜在安全漏洞。与真实的黑客攻击不同,渗透测试旨在发现…

Spring定时器 Cron表达式的用法

前言 Cron表达式是一种用于描述定时任务执行时间的字符串格式,这种表达式基于时间字段来定义任务应该在哪些时间点执行,通常包含六个或七个用空格隔开的字段,分别代表秒、分钟、小时、日期、月份和星期(年份是可选的)…

系统架构最佳实践 -- 相关JAVA架构

1. java 类加载器架构 2. JVM 架构 3. Java 技术体系 4. 线程运行架构 5. Java 体系(编译与运行)结构 6. JMS 技术架构 7. JMX 技术架构 8. Spring 架构 9. Hibernate 架构 10. ibatis 架构 11. Struts2 架构 12. Struts1 架构 13. JBPM 14. EJB 技术架构…

万字总结!Docker简介及底层关键技术剖析

本文首发在个人博客上:万字总结!Docker简介及底层关键技术剖析 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#x…

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

滚动条是用户界面中的图形化组件,用于指示和控制内容区域的可滚动范围。当元素内容超出其视窗边界时,滚动条提供可视化线索,并允许用户通过鼠标滚轮、触屏滑动或直接拖动滑块来浏览未显示部分,实现内容的上下或左右滚动。它在保持…

补档 -- 测试的分类(1)

最近有很多人私信我说: 灰灰你什么时候写测试分类阿, 本来我要开始肝性能测试的, 我一看, 奥, 之前摸鱼忘写了, 所以这里补档(叶问指着一边笑.jpg). 总览 标红的需要注意一下. 为什么要对软件测试进行分类? 软件测试是软件生命周期的一个重要环节, 具有较高的复杂性, 对于软…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 🌵hoare版本 🌵挖坑法 ​编辑 🌵前后指针版本 ​编辑 3.2 快速排序优化 🌻三数取中法选key 3.4 快速排序…

如何在群晖NAS部署office系统办公服务并实现无公网IP远程编辑文件

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

Umi.js:登录之后需要手动刷新权限菜单才能渲染

在使用Umi.js开发后台管理页面时,用户登录之后,总是需要手动刷新一次页面,才能够拿到全局状态/权限信息。 问题描述 结合使用umi/plugin-layout和umi/plugin-access,登录进入页面,配置的权限菜单未渲染,需…

javaWeb项目-大药房管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、Java语言简介 Ja…

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 一、检查服务是否开启 找到 【Docker Desktop Service】,然后,启动他; 你也可以直接设置为“自动” 找到服务,右键》属性》启动类型:自动》点击…

三. TensorRT基础入门-TensorRT简介

目录 前言0. 简述1. 什么是TensorRT2. TensorRT的工作流介绍3. TensorRT的一些限制总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第三章—TensorRT 基础入门&#xf…

三、Flask模型基础

ORM 创建模型 # exts.py:插件管理 # 扩展的第三方插件 # 1.导入第三方插件 from flask_sqlalchemy import SQLAlchemy # ORM插件 from flask_migrate import Migrate # 2. 初始化 db = SQLAlchemy() # ORM migrate = Migrate() # 数据迁移 # 3. 和app对象绑定 def init_ex…

kafka实验部署

一、前期准备 二、kafka实验 在zookeeper后继续进行操作 2.1 为ndoe1、node2、node3作出部署 2.1.1 解压kafka压缩包(node1举例) 2.1.2 操作 将解压后的kafka移动到kafka,进入到kafka下的config中,复制文件 2.1.2.1 编辑server.pr…

【笔试训练】day7

1.在字符串中找出连续最长的数字串 思路&#xff1a; 简单双指针&#xff0c;随便怎么暴力 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include<string> using namespace std;int main() {string str;cin >> str;int ans …

聚道云软件连接器助力医疗器械有限公司打通金蝶云星辰与飞书

摘要 聚道云软件连接器成功将金蝶云星辰与飞书实现无缝对接&#xff0c;为某医疗器械有限公司解决采购订单、付款单同步、审批结果回传、报错推送等难题&#xff0c;实现数字化转型升级。 客户介绍 某医疗器械有限公司是一家集研发、生产、销售为一体的综合性医疗器械企业。…

【linux运维】系统常见管理命令

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习基本的shell编程和linux命令&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于b站大学——linux运维课程进行的&#xff0c;…