python - 从 crontab 计划时与 Oracle 数据库 (cx_Oracle) 的连接不工作,但可以独立工作

标签 python python-3.x shell cron cx-oracle

我有一个 python (3.6) 脚本,它可以对从 Oracle DB 检索的数据执行一些操作。 然后我有一个用于执行该脚本的自动化 shell 脚本。然后我在 crontab 中安排此类 shell 的执行。

如果我以独立方式执行 shell (sh shell.sh),它工作得很好,而当它作为 crontab 作业运行时,与 Oracle DB 的连接失败 --> class 'cx_Oracle.DatabaseError'

我正在尝试简化我正在使用的代码,Python脚本如下:

#!/usr/bin/python3.6
# coding: utf-8
import pandas as pd
import cx_Oracle
try:
    conn = cx_Oracle.connect(username/pwd@hostname:port/db_name)
    query = """SELECT * FROM schema.table"""
    df = pd.read_sql(query, con = conn)
except:
    print(sys.exc_info()[0])
    raise
    sys.exit(1)

shell正在做这样的事情:

#!/usr/bin/env bash
if [something]
then
    python3.6 pyscript.py
fi

crontab -l 结果:

* * * * * cd /root/workindirectory ; sudo sh shell.sh >> test.out

提前感谢大家的帮助。

编辑:指定 shell 和 python 脚本都有 777 权限

最佳答案

很抱歉,我认为这是 cx_Oracle Package Not working inside Crontab 的重复项

由于 cron 不加载 bash 配置文件,我找到了在 shell 脚本中导出 ORACLE_HOME 和 LD_LIBRARY_PATH 的解决方案。正如链接问题中所指出的,要添加的行是:

export ORACLE_HOME=/usr/lib/oracle/<version>/client(64)
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

关于python - 从 crontab 计划时与 Oracle 数据库 (cx_Oracle) 的连接不工作,但可以独立工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52002357/

相关文章:

Python pysqlite2 dbapi2问题

python - 使用 python 使用 .geojson 文件查找位置

python - 在路径中使用变量的目录中创建文件夹(Python 3.6)

linux - BASH脚本在需要按键返回提示时调用新脚本

linux - 几天前显示所有修改文件的Shell脚本

linux - 重启后自动直接运行一个shell命令并保持运行

python - 在django中使用多个数据库

python - 将 Levenshtein 比率转换为 C++

python - 如何显示指定目录中的文件列表

python - 从服务器获取响应