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]

Reply via email to