Thanks for this answer. As you suggested i tried to connect, with success, to my database through cx_oracle.
ip = '[MyOracleServerIP]' port = 1521 service_name = '[MyServiceName]' dsn = cx_Oracle.makedsn(ip, port, service_name=service_name) db = cx_Oracle.connect('[login]', '[password]', dsn) print db.version db.close() Output : 12.1.0.2.0 Functional both in "test" and "run". Le mercredi 26 octobre 2016 15:45:59 UTC+2, Mike Bayer a écrit : > > This is connectivity issues, I have no idea what airflow is, however if > you're dropping connections this would be something to email the cx_oracle > list about . The error message looks like you're not able to establish a > connection in the first place. You might want to create a plain cx_oracle > test script at least to make the options and the error clear. > > On Oct 26, 2016 9:22 AM, "Vincent B." <mr.benoi...@gmail.com <javascript:>> > wrote: > >> Hi, >> >> I am using sqlalchemy 1.0.5, Airflow 1.7.1.3, Python 2.7 and Oracle 12. >> >> I'm pretty much stuck with the integration of a connexion to Oracle >> through sqlalchemy in an Airflow Airbnb script. >> >> >> Here is my log from Airflow/sqlalchemy. >> >> [2016-10-26 14:51:07,574] {base.py:719} INFO - COMMIT >> [2016-10-26 14:51:07,631] {log.py:109} INFO - SELECT USER FROM DUAL >> [2016-10-26 14:51:07,631] {log.py:109} INFO - {} >> [2016-10-26 14:51:07,633] {log.py:109} INFO - SELECT CAST('test plain >> returns' AS VARCHAR(60 CHAR)) AS anon_1 FROM DUAL >> [2016-10-26 14:51:07,633] {log.py:109} INFO - {} >> [2016-10-26 14:51:07,634] {log.py:109} INFO - SELECT CAST('test unicode >> returns' AS NVARCHAR2(60)) AS anon_1 FROM DUAL >> [2016-10-26 14:51:07,634] {log.py:109} INFO - {} >> [2016-10-26 14:51:07,638] {log.py:109} INFO - Disconnection detected on >> checkout: >> [2016-10-26 14:51:07,638] {log.py:109} INFO - Invalidate connection >> <cx_Oracle.Connection to >> [MyDataBaseName]@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=[MyOracleServerIP])(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=I2B2)))> >> >> (reason: DisconnectionError:) >> [2016-10-26 14:51:07,678] {log.py:109} INFO - Disconnection detected on >> checkout: >> [2016-10-26 14:51:07,678] {log.py:109} INFO - Invalidate connection >> <cx_Oracle.Connection to >> [MyDataBaseName]@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=[MyOracleServerIP])(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=I2B2)))> >> >> (reason: DisconnectionError:) >> [2016-10-26 14:51:07,714] {log.py:109} INFO - Reconnection attempts >> exhausted on checkout >> [2016-10-26 14:51:07,715] {log.py:109} INFO - Invalidate connection >> <cx_Oracle.Connection to >> [MyDataBaseName]@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=[MyOracleServerIP])(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=I2B2)))> >> [2016-10-26 14:51:07,716] {models.py:1286} ERROR - This connection is >> closed >> Traceback (most recent call last): >> File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line >> 1245, in run >> result = task_copy.execute(context=context) >> File >> "/usr/local/lib/python2.7/dist-packages/airflow/operators/python_operator.py", >> >> line 66, in execute >> return_value = self.python_callable(*self.op_args, **self.op_kwargs) >> File "/root/airflow/dags/debug_py2b2_connect.py", line 41, in >> test_connect >> connection=i2b2data.engine.connect() >> File >> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line >> 2085, in connect >> return self._connection_cls(self, **kwargs) >> File >> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line >> 90, in __init__ >> if connection is not None else engine.raw_connection() >> File >> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line >> 2171, in raw_connection >> self.pool.unique_connection, _connection) >> File >> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line >> 2141, in _wrap_pool_connect >> return fn() >> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line >> 328, in unique_connection >> return _ConnectionFairy._checkout(self) >> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line >> 804, in _checkout >> raise exc.InvalidRequestError("This connection is closed") >> InvalidRequestError: This connection is closed >> [2016-10-26 14:51:07,718] {models.py:1306} INFO - Marking task as FAILED. >> >> >> >> Here is my sql alchemy __init__code in my python class >> def __init__(self,connection_uri,params): >> if connection_uri.startswith("oracle"): >> os.environ['NLS_LANG']= 'AMERICAN_AMERICA.AL32UTF8' >> self.engine=sqlalchemy.create_engine(connection_uri, **params) >> Session = sessionmaker(bind=self.engine, autoflush=True, autocommit=False) >> self.session = Session() >> self.metadata = MetaData() >> self.metadata.bind=self.engine >> >> >> This error "This connection is closed" is *not *raised when in airflow >> "test" mode. I can connect and update my database and my python script >> works perfectly. >> However in airflow "run" mode it fails. >> >> I also have this oracle warning, >> <msg time='2016-10-17T11:52:47.755+02:00' org_id='xxxxxx' comp_id='rdbms' >> type='UNKNOWN' level='16' host_id='xxxxxxx' host_addr='xxxxxx' >> module='python@xxxxxxx' pid='8978'> <txt>Using deprecated >> SQLNET.ALLOWED_LOGON_VERSION parameter. </txt> </msg> >> >> But it seems unrelated as i get this warning when i execute my script in >> "test" (success) and "run" (failure) mode. We are planning to fix this soon. >> >> >> I have no clue if this error is related to airflow, oracle or sqlalchemy >> configuration. >> >> >> >> -- >> SQLAlchemy - >> The Python SQL Toolkit and Object Relational Mapper >> >> http://www.sqlalchemy.org/ >> >> To post example code, please provide an MCVE: Minimal, Complete, and >> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >> description. >> --- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sqlalchemy+...@googlegroups.com <javascript:>. >> To post to this group, send email to sqlal...@googlegroups.com >> <javascript:>. >> Visit this group at https://groups.google.com/group/sqlalchemy. >> For more options, visit https://groups.google.com/d/optout. >> > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.