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

news/2024/11/17 3:29:42/

背景说明 

        最近在做一个视频分析的项目,然后需要将视频分析的数据写入到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.ppmy.cn/news/1423041.html

相关文章

芯片的未来发展趋势

2024 年,该行业将专注于 AI/ML、RISC-V、量子、安全等发展趋势。 今年年初,大多数人从未听说过生成式人工智能。现在整个世界都在竞相利用它,而这仅仅是个开始。量子计算、6G、智能基础设施等新市场领域专用处理正在加速对更快、更高效、更多…

Linux学习之路 -- PCB介绍 -- 进程优先级

1、什么是优先级? 进程需要某一种资源,而系统要通过特定的方式来决定谁先获得这些资源,而系统的做法就是给不同的进程安排不同的优先级。让优先级高的进程先享有一些资源。 2、为什么要有优先级 因为资源的缺乏,所以系统的才会…

【JavaEE多线程】理解和管理线程生命周期

目录 ThreadThread类的常用构造方法Thread类的常见属性启动一个线程-start()终止一个线程等待一个线程-join()线程的状态 Thread Thread 就是在 Java 中,线程的代言人。系统中的一个线程,就对应到 Java 中的一个 Thread 对象。围绕线程的各种操作&#…

数据结构----顺序表

在学习顺序表之前,我们先来了解一下数据结构。 数据是什么呢? 我们在生活中常见的名字,数字,性别等都属于数据。 结构又是什么呢? 在计算机中,结构就是用来保存数据的方式。 总的来说,数据…

单片机入门还能从51开始吗?

选择从51单片机开始入门还是直接学习基于ARM核或RISC核的单片机,取决于学习目标、项目需求以及个人兴趣。每种单片机都有其特定的优势和应用场景,了解它们的特点可以帮助你做出更合适的选择。 首先,我们说一下51单片机的优势: 成熟…

Vue的虚拟DOM是什么

核心思想 虚拟DOM/Virtual DOM,是数据驱动视图的一种解决方案。核心思想:使用 js对象的形式来表现html的dom结构。 背景 由于现代网络和浏览器的发展,网页的内容也变得很复杂,ajax 诞生让用户可以在不刷新页面的条件下获取到数…

Spring Boot 学习(3)——Spring Initializr 创建项目问题解决

产生问题的原因,各种的版本都较老,所以导致出现问题。目前暂未打到合适的教程,按老教程学起来先。 小白瞎学,大神勿喷! 再次强调环境:maven 3.3.9、jdk 1.8、idea 2017、Spring 4.3.13、Spring Boot 1.5.…

关键里程碑:自然语言处理的发展历程

关键里程碑:自然语言处理的发展历程 自然语言处理(NLP)是计算机科学和人工智能的一个分支,致力于使计算机能够理解和处理人类语言。以下是NLP发展过程中的一些关键里程碑: 1950s & 60s:NLP的基础 1954…