Python 从crontab计划时,与Oracle db(cx_Oracle)的连接不起作用,但可以作为独立连接使用
我有一个python(3.6)脚本,它可以处理从Oracle DB检索到的数据。 然后我有一个shell脚本,用于执行脚本的自动化。我在crontab中计划执行此类shell 如果我以独立方式执行shell(sh shell.sh),它工作得非常好,而当它作为crontab作业运行时,与Oracle DB的连接失败-->类“cx\u Oracle.DatabaseError” 我试图简化我正在使用的代码,Python脚本如下所示:Python 从crontab计划时,与Oracle db(cx_Oracle)的连接不起作用,但可以作为独立连接使用,python,python-3.x,shell,cron,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的连接失败-->类“cx\u Oracle.DatabaseError” 我试图简化我正在使用的代码,Python脚本如下所示: #!/usr/bin/python3.6 # coding: u
#!/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权限,我很抱歉,因为我认为这是 由于cron不加载bash概要文件,我在shell脚本中找到了导出ORACLE_HOME和LD_LIBRARY_路径的解决方案。如相关问题所述,需要添加的行为:
export ORACLE_HOME=/usr/lib/oracle/<version>/client(64)
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
导出ORACLE\u HOME=/usr/lib/ORACLE//client(64)
导出LD\u库路径=$ORACLE\u HOME/lib:$LD\u库路径