gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:06:34 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com