mosescha1972 commented on issue #37793: URL: https://github.com/apache/superset/issues/37793#issuecomment-3869166542
<html> <body> <!--StartFragment--><h2 data-start="75" data-end="139">Problem Summary: Superset + Oracle + SQLAlchemy + Python 3.11</h2> <p data-start="141" data-end="271">When running <strong data-start="154" data-end="182">Apache Superset (master)</strong> with <strong data-start="188" data-end="203">Python 3.11</strong> and <strong data-start="208" data-end="218">Oracle</strong>, the application fails to start with errors such as:</p> <ul data-start="273" data-end="470"> <li data-start="273" data-end="343"> <p data-start="275" data-end="343"><code data-start="275" data-end="343">InvalidRequestError: cx_Oracle version 5.2 and above are supported</code></p> </li> <li data-start="344" data-end="421"> <p data-start="346" data-end="421"><code data-start="346" data-end="421">NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:oracle.oracledb</code></p> </li> <li data-start="422" data-end="470"> <p data-start="424" data-end="470">greenlet / session / FAB initialization errors</p> </li> </ul> <p data-start="472" data-end="578">These errors are misleading.<br data-start="500" data-end="503"> They are <strong data-start="512" data-end="534">secondary symptoms</strong> of a deeper compatibility mismatch between:</p> <ul data-start="580" data-end="680"> <li data-start="580" data-end="618"> <p data-start="582" data-end="618">Superset’s pinned SQLAlchemy version</p> </li> <li data-start="619" data-end="649"> <p data-start="621" data-end="649">The Oracle driver being used</p> </li> <li data-start="650" data-end="680"> <p data-start="652" data-end="680">The connection string format</p> </li> </ul> <hr data-start="682" data-end="685"> <h2 data-start="687" data-end="704">The Root Cause</h2> <p data-start="706" data-end="753">Superset (even on master) currently depends on:</p> <pre class="overflow-visible! px-0!" data-start="755" data-end="782"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span><span class="hljs-attr">SQLAlchemy</span></span><span> == </span><span><span class="hljs-number">1.4</span></span><span>.x </span></span></code></div></div></pre> <p data-start="784" data-end="855">However, most modern documentation about Oracle + SQLAlchemy refers to:</p> <pre class="overflow-visible! px-0!" data-start="857" data-end="915"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span><span class="hljs-attribute">SQLAlchemy</span></span><span> </span><span><span class="hljs-number">2</span></span><span>.x + oracledb + oracle+oracledb:// </span></span></code></div></div></pre> <p data-start="917" data-end="999">This <strong data-start="922" data-end="939">does not work</strong> with Superset, because Superset is still on SQLAlchemy 1.4.</p> <p data-start="1001" data-end="1013">As a result:</p> <ul data-start="1015" data-end="1319"> <li data-start="1015" data-end="1109"> <p data-start="1017" data-end="1109">Using <code data-start="1023" data-end="1033">oracledb</code> fails because SQLAlchemy 1.4 does not include the <code data-start="1084" data-end="1101">oracle.oracledb</code> dialect</p> </li> <li data-start="1110" data-end="1180"> <p data-start="1112" data-end="1180">Attempting to upgrade SQLAlchemy to 2.x breaks Superset dependencies</p> </li> <li data-start="1181" data-end="1234"> <p data-start="1183" data-end="1234">Using an old cx_Oracle version fails on Python 3.11</p> </li> <li data-start="1235" data-end="1319"> <p data-start="1237" data-end="1319">The error messages point to the wrong problem (greenlet, session, FAB, migrations)</p> </li> </ul> <hr data-start="1321" data-end="1324"> <h2 data-start="1326" data-end="1380">What <em data-start="1334" data-end="1344">Actually</em> Works (the only stable combination)</h2> <p data-start="1382" data-end="1436">For <strong data-start="1386" data-end="1421">Superset + Python 3.11 + Oracle</strong>, you must use:</p> <div class="TyagGW_tableContainer"><div tabindex="-1" class="group TyagGW_tableWrapper flex flex-col-reverse w-fit"> Component | Required Version / Setting -- | -- SQLAlchemy | 1.4.x (leave as-is) Oracle driver | cx_Oracle==8.3.0 Do NOT use | oracledb Connection URI | oracle+cx_oracle://... </div></div><!--EndFragment--> </body> </html> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
