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

news2024/11/15 17:50:53

背景说明 

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

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

# -*- coding='utf-8' -*-
'''
功能:使用python连接oracle数据库进行测试连接成功与否
'''
import cx_Oracle

try:
    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.zip

tar -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.coloradmin.cn/o/1612557.html

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

相关文章

【周总结】总结下这周的工作、(hashmap)知识巩固等

总结 这周开发任务已经全部结束,主要是在修改一些 jira 问题 需要反思的是,中间改造接口时,数据库表需要新增一个字段,这个 sql 脚本忘记加到 basetable.sql 脚本里面了,这样如果是新建的项目,创建的时候不…

HackMyVM-Hommie

目录 信息收集 arp nmap WEB web信息收集 dirsearch ftp tftp ssh连接 提权 系统信息收集 ssh提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:77:ed:84, IPv4: 192.168.9.126 Starting arp-…

常见的经典目标检测算法

目标检测是计算机视觉领域的一个核心任务,它涉及到识别图像中的物体并确定它们的位置。以下是一些常见的经典目标检测算法: R-CNN系列 R-CNN(Region-based Convolutional Neural Network)是一种用于目标检测的算法,它…

未知个数一维数组:申请资源、初始化、访问、释放资源

示例&#xff1a; /*** brief how about array-unknown-count? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h>…

Git | Git基本命令

Git | Git基本操作 文章目录 Git | Git基本操作一、创建Git本地仓库1、创建Git仓库2、配置Git3、理解工作区、暂存区、版本库关系 二、添加、修改与查看添加文件查看历史提交记录 修改文件查看.git文件 三、版本回退版本回退撤销修改尚未add已add但还未commit已add并commit 删除…

项目小游戏-贪吃蛇

目录 1.游戏开始 - GameStart 1.1cmd命令窗口 调节窗口命令 ​编辑更改窗口命名 ​编辑 1.2 Win32 API win32 API 的介绍: ​编辑 获取控制台坐标COORD 获取控制台句柄: 获取缓冲台光标信息: 获取虚拟键位: 本地初始化 setlocale(); 游戏开始的具体实现&#xff1a…

uniapp中scroll-view初始化的时候 无法横向滚动到某个为止

项目需求 实现日历&#xff08;13天&#xff09;默认高亮第六天 并定位到第六 左边右边各六天&#xff08;可以滑动&#xff09; 直接上代码 <template><scroll-view class"scroll-X":show-scrollbar"true" :scroll-x"scrollable":…

理解这几个安全漏洞,你也能做安全测试!

如今安全问题显得越来越重要&#xff0c;一个大型的互联网站点&#xff0c;你如果每天查看日志&#xff0c;会发现有很多尝试攻击性的脚本。 如果没有&#xff0c;证明网站影响力还不够大。信息一体化的背后深藏着各类安全隐患&#xff0c;例如由于开发人员的不严谨导致为Web应…

八字入门书介绍

《千里命稿》&#xff0c;此书是民国时期上海的韦千里先生所著&#xff0c;是他主讲的命学培训班的讲义&#xff0c;成书时间在1935年。该书语言简练、述理清晰&#xff0c;是讲述子平命学概念的佼佼者&#xff0c;尤其是对五行、六神的性质讲解&#xff0c;可以说是此书的精华…

xpath的使用以及原理-元素定位

# 查找文本框输入文本 driver.find_element(By.CLASS_NAME,"nav-search-input").send_keys("i_cecream查找到了") #查找到之后点击 driver.find_element(By.CLASS_NAME,"nav-search-btn").click()time.sleep(30)selenium4的解析。 client调用se…

Elasticsearch进阶篇(三):ik分词器的使用与项目应用

ik分词器的使用 一、下载并安装1.1 已有作者编译后的包文件1.2 只有源代码的版本1.3 安装ik分词插件 二、ik分词器的模式2.1 ik_smart演示2.2 ik_max_word演示2.3 standard演示 三、ik分词器在项目中的使用四、ik配置文件4.1 配置文件的说明4.2 自定义词库 五、参考链接 一、下…

动态内存的管理

1.为什么要有动态数组呢 int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 上述开辟空间的方式有两个特点&#xff1a; 空间开辟大小是固定的数组在申明的时候&#xff0c;必须指定数组的长度&#xff0c;数组空间一旦确定了大小…

【AI自媒体制作】【AI工具】天工AI

链接&#xff1a;天工AI 目前chatgpt3.5已经免费&#xff0c;很多AI平台都可以进行一定层度的白嫖&#xff0c;对于个人开发者是一件好事&#xff0c;有些会员就没必要充值了。 天工AI是比较常见的AI工具了&#xff0c;可以识别图片、智能问答、生成图片等。当然对于一个程序员…

关于电商独立站搭建中电商API数据采集接口的应用

搭建供应链系统时&#xff0c;您可能需要与电商平台进行集成&#xff0c;以实现订单管理、库存同步、物流跟踪等功能。以下是一些常见的电商接口&#xff0c;可以帮助您构建供应链系统&#xff1a; 1. **淘宝开放平台接口**&#xff1a;淘宝开放平台提供了丰富的接口&#xff…

上位机图像处理和嵌入式模块部署(树莓派4b和驱动的编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树莓派4b上面还支持驱动代码的编写&#xff0c;这是我没有想到的。这里驱动&#xff0c;更多的是一种框架的编写&#xff0c;不一定是编写真正的驱…

Selenium web自动化测试环境搭建

Selenium web自动化环境搭建主要要经历以下几个步骤&#xff1a; 1、安装python 在python官网&#xff1a;Welcome to Python.org&#xff0c;根据各自对应平台如&#xff1a;windows&#xff0c;下载相应的python版本。 ​ 下载成功后&#xff0c;点击安装包&#xff0c;一直…

排序之插入排序:从斗地主到插入排序

目录 1.斗地主如何摸牌 2.从摸牌想到插入排序 3.完成插入排序 4.结束语 1.斗地主如何摸牌 不知道各位是否玩过几乎人人都玩过的斗地主游戏呢&#xff1f;相必各位或多或少都玩过一点&#xff0c;再没玩过也看别人打过。今天博主就将从这个游戏为大家讲解我们的插入排序。 在…

shell编写

运算符 echo 打印 unset 删除 [ boolean表达式 ] 注意中括号中有两个空格&#xff0c;两个空格中添加表达式 0为true 1为false $?查看结果 -ge 大于等于 lt小于 le小于等于 eq等于 ne不等于 格式& | [ 表达式 ] -o是或者or的意思 -a是and的意思 &#xff01…

访问学者申请的成功经验

在申请成为访问学者时&#xff0c;经验是至关重要的。下面知识人网小编将介绍一些可以帮助您成功申请的经验和技巧。 首先&#xff0c;了解目标机构或大学的研究方向和需求是非常重要的。在申请之前&#xff0c;仔细研究该机构的学术项目、研究成果以及教授的专业领域&#xff…

kaggle 泰坦尼克号2 得分0.7799

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarni…