版本号:

Ubuntu18.04

Apache/2.4.29 (Ubuntu) 

现象:

Python: import cx_Oracle ImportError: No module named cx_Oracle error is thown

直接通过命令行的方式,python可以连接到oracle,但是通过CGI 无法连接,提示 No module named ‘cx_Oracle’

安装oracle可以查看这篇文章: https://pmvt.cn/database/ubuntu18-04-install-oracle-client.html

用python3连接oracle可以查看这篇文章: https://pmvt.cn/develop/python3-connect-oracle.html

处理过程:

1、在命令行python3连接oracle数据库没有问题,但是通过网页访问就提示内部错误。

2、查看Apache的错误日志

/var/log/apache2/error.log

提示:ModuleNotFoundError: No module named 'cx_Oracle'

cx_Oracle是已经装好的,Apache却无法识别这个模块。

3、问题在于Apache访问的时候使用的用户名是www-data,修改为当前用户名后就可以找到cx_Oracle

sudo vi /etc/apache2/envvars
www-data改为当前用户名hadoop

重启apache:

sudo /etc/init.d/apache2 restart 

4、但是开始提示 cx_Oracle.DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified

修改连接oracle数据库的代码:

conn = cx_Oracle.connect(user='username', password='[email protected]', dsn='server:port/service_name')

5、访问页面,又开始提示超时

Gateway Timeout

The gateway did not receive a timely response from the upstream server or application.


修改超时时间,由300s改为600s

 sudo vi /etc/apache2/apache2.conf 

6、再重启Apache

sudo /etc/init.d/apache2 restart 

7、成功!

可以看到处理时长为5.2分钟。

python connecting time

https://stackoverflow.com/questions/25767485/oracle-connection-string-with-at-sign-in-pasword


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!



0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注