文档章节

python连接oracle数据库.so文件未找到的解决办法

rootliu
 rootliu
发布于 2017/09/07 17:58
字数 873
阅读 5
收藏 0

 

python连接oracle数据库.so文件未找到的解决办法

标签: PythonFlaskoracle服务器数据库

2016-12-30 15:28 202人阅读 评论(0) 收藏 举报

 分类:

Python(6) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

    公司的项目是要连接数据库的,使用的Python框架Flask开发,之前一直都是连接的MySQL数据库,一直也没有在意,今天接到消息需要连接Oracle,测试时就出现了错误,显示找不到有关的.so文件,如下:

 

ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory

 

 

    也就是说Python在执行Oracle相关的文件时,需要依赖于Oracle带的.so文件,如果找不到,就会报错。这个问题搞了一中午才解决,犯了一个低级错误,但很容易让人忽略,故记录如下:

 

那么,按照思路一步一步地查找原因:

 

1. 是否安装Oracle服务器。

    注意,这里安装的是Oracle的服务器端,并不是客户端。我安装的是11gR版本。所以不是这个原因。

 

2. 环境变量是否配置,且是否配置成功。

    配置环境变量最好在root和相关用户下都配置一下,防止遗漏。

    以 root 身份进入 /home目录,这下面是一些root创建的用户,如下:

 

 

 

    这里的oracle用户是Oracle数据库安装时创建的用户,我们所用到的一些 .so 文件就在其中,我的 .so 文件所在目录为:

/home/oracle/product/11gR2/lib

    algoface用户是我的Python项目所在的地方,那么配置环境变量时,就要把oracle目录下的相关目录配置到algoface用户下的 .bash_profile 文件中。(最好也在root的.bash_profile下配一下,防止不起作用)

配置方法如下:

    以 algoface 用户进入algoface的主目录,打开 .bash_profile 文件,加入一下环境变量(这个路径根据具体的目录进行设置,这是我的路径):

 

export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11gR2/
export LD_LIBRARY_PATH=/home/oracle/product/11gR2/lib

 

过程:

 

 

    编辑文件:

 

 

     执行 .bash_profile,这里一定要执行,否则环境变量不会起作用,就像Windows配完环境变量要重启一样。

 

 

  至此,环境变量配置成功,可以使用命令 echo $LD_LIBRARY_PATH 来查看是否有相关路径输出出来,判断环境变量是否配置成功。

 

3. 用户权限是否够用

    这一步就是我找了好久的问题,配置完环境变量以为就可以了,却还是报原来的错误,最后在自己手动进行 ln -s 进行软链接时才发现原来是用户的权限不够。在上面可以看到Python文件的执行用户和Oracle用户不是同一个,所以,权限问题是阻碍连接的主要问题。

    使用oracle用户进行相关的lib目录,执行 ll -d 查看权限,发现同组和其他用户都是没有权限的(因为这里我修改过,所以会有权限,刚开始时是没有的),因此附上权限即可,如下:

 

 

    至此,问题解决,进入Python命令行,测试成功,不报错:

 

 

 

  虽然最后是因为一个小问题导致时间有些浪费,但权限问题在Linux中至关重要,因此记录一下。

本文转载自:http://blog.csdn.net/u014267402/article/details/53942987

共有 人打赏支持
rootliu
粉丝 4
博文 281
码字总数 2796
作品 0
海淀
数据库管理员
私信 提问
Python远程连接服务器上的Oracle数据库

Python远程连接服务器上的Oracle数据库 1、正确的开启方式 在你的IPython或者是Anaconda的jupyter中输入一下代码,其中: ‘username’—— 用户名 ‘password’——密码 ‘192.168.1.1:1521/...

推荐码发放
05/04
0
0
Django-ORM数据库操作

背景 Django框架功能齐全自带数据库操作功能,由于工作中设计巨量的api接口,需要一个很好的web后端服务框架,Django给了莫大的帮助。本文主要介绍Django的ORM框架 我们一般对数据库的使用的...

武耀文
06/12
0
0
Can’t connect to local MySQL server through socket

mysql,mysqldump,php连接mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 产生此问题的原因一般有......

Mr_sheng
05/04
0
0
CentOS6中Python3和Django的安装配置

刚好这段时间闲着有时间也就学学python算是充电了,我选择的是virtualBox中安装CentOS6.5的环境,系统自带的python是2.6.6,因此单独安装了python3.3的版本。安装过程参考了博文: http://w...

gangzz
2014/01/09
0
0
Django连接使用SQL Server数据库

前言: 众所周知,Django 默认支持sqlite,mysql,oracle,postgresql数据库,不支持SQL Server数据库。但实际生产环境中SQL Server数据库用的还是比较多的。我们这里用ODBC驱动连接SQL Server数...

ZHAO_JH
12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
12
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
14
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
18
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
11
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部