我是Python的新手。我正在使用apache airflow和一个任务,我正在调用存储过程oracle。我看到错误的非法变量名称/编号
t1 = OracleOperator(
task_id='Exe_PA',
oracle_conn_id='DEV_SR',
parameters=('1', 'TC', 'ESPA', '99', '2', '100', '28-08-2019', '0'),
sql= 'Begin pno_validacion_inicial(); end;',
dag=dag)
[2019-08-29 18:09:21,089] {dbapi_hook.py:168}信息-开始pno_validacion_inicial();结束;带有参数('1','TC','ESPA','99','2','100','28-08-2019','0') [2019-08-29 18:09:21,091] { init .py:1580}错误-ORA-01036:非法的变量名称/编号 追溯(最近一次通话): _run_raw_task中的文件“ /usr/local/lib/python2.7/dist-packages/airflow/models/init.py”,第1441行 结果= task_copy.execute(context = context) 执行中的文件“ /usr/local/lib/python2.7/dist-packages/airflow/operators/oracle_operator.py”,第63行 参数= self.parameters) 运行中的文件“ /usr/local/lib/python2.7/dist-packages/airflow/hooks/dbapi_hook.py”,第169行 cur.execute(s,参数)
答案 0 :(得分:0)
您对<body>
<div id="Test"></div>
<script type="text/javascript">
document.getElementById("Test").innerHTML = "whatever";
</script>
</body>
的调用不包含任何参数,但您要传递8个参数。您的SQL应该看起来像这样:
<body>
<div id="Test">whatever</div>
<script type="text/javascript">
document.getElementById("Test").innerHTML = "whatever";
</script>
</body>
答案 1 :(得分:0)
参考documentation,您可以看到参数必须是映射或可迭代的。您的代码应类似于:
t1 = OracleOperator(
task_id='Exe_PA',
oracle_conn_id='DEV_SR',
parameters=({'param1':'1', 'param2':'TC', 'param3':'ESPA', 'param4':'99', 'param5':'2', 'param6':'100', 'param7':'28-08-2019', 'param8':'0'}),
sql= 'Begin pno_validacion_inicial(:param1, :param2, :param2, :param3, :param4, :param5, :param6, :param7, :param8 ); end;',
dag=dag)