GitHub user Hariprasath-0018 added a comment to the discussion: Unable to Connect SQL Server Database in Apache Superset
Hi Dosu, I updated my Dockerfile, rebuilt my Docker image, and restarted Superset. However, when I tried to verify the driver installation by running: python -c "import pyodbc; print(pyodbc.drivers())" inside the container, I encountered the following error: Traceback (most recent call last): File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'pyodbc' It seems that the pyodbc module is not installed inside the container. Could you please advise on how to resolve this issue? Thanks, Hariprasath N On Fri, 30 Jan 2026 at 12:08, dosubot[bot] ***@***.***> wrote: > *dosubot[bot]* left a comment (apache/superset#37560) > <https://github.com/apache/superset/issues/37560#issuecomment-3822118707> > > The error means Superset can't find or load the required SQL Server driver > in your environment. This is common in recent Docker images, where drivers > like pymssql or pyodbc are no longer included by default. Even if you > installed pymssql, it may not work reliably on modern Python or Debian > images due to compatibility issues with SQLAlchemy 2.x and Python ≥3.10. > > The recommended solution is to switch to the pyodbc driver and ensure > both the Microsoft ODBC Driver 18 and the pyodbc Python package are > installed in your Superset image. Here’s how you can do it: > > 1. > > *Update your Dockerfile* (for Debian 12/bookworm): > > FROM apache/superset:latest > USER root > RUN apt-get update && \ > apt-get install -y build-essential libpq-dev unixodbc-dev curl gnupg2 > && \ > curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg > --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \ > curl -sSL https://packages.microsoft.com/config/debian/12/prod.list -o > /etc/apt/sources.list.d/mssql-release.list && \ > apt-get update && \ > ACCEPT_EULA=Y apt-get install -y msodbcsql18 && \ > pip install --no-cache-dir pyodbc && \ > apt-get clean > USER superset > > Reference > <https://github.com/apache/superset/issues/36183#issuecomment-3552040461> > 2. > > *Rebuild your Docker image and restart Superset*. > 3. > > *Use the correct SQLAlchemy connection string* for SQL Server with > pyodbc, making sure the ODBC string is URL-encoded once (not > double-encoded): > > > mssql+pyodbc:///?odbc_connect=Driver%3D%7BODBC+Driver+18+for+SQL+Server%7D%3BServer%3D<your_server>%3BDatabase%3D<your_db>%3BUid%3D<your_user>%3BPwd%3D<your_password>%3BEncrypt%3Dyes%3BTrustServerCertificate%3Dno%3BConnection%20Timeout%3D30%3B > > Reference > > <https://github.com/apache/superset/discussions/33957#discussioncomment-13640505> > 4. > > *Verify driver installation* by running python -c "import pyodbc; > print(pyodbc.drivers())" inside your container. You should see ODBC > Driver 18 for SQL Server in the output. > > If you still have issues, please share your exact connection string and > clarify if you’re running Superset in Docker, Kubernetes, or another > environment. Also, check the Superset logs for any additional stacktrace > details. > > Let me know if you need a sample Dockerfile for Ubuntu 22.04 or further > troubleshooting steps! > > *To reply, just mention @dosu <https://go.dosu.dev/dosubot>.* > ------------------------------ > > How did I do? Good > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=great_response> > | Irrelevant > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=irrelevant_answer> > | Incorrect > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=incorrect_sources> > | Verbose > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=too_verbose> > | Hallucination > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=hallucination> > | Report 🐛 > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=bug_report> > | Other > <https://app.dosu.dev/response-feedback/38ba085b-3200-4cd1-9e1f-ebcb2bc1e556?feedback_type=other> > > [image: Chat with Dosu] > <https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github> > [image: Open in Cursor] > <https://cursor.com/link/prompt?text=The%20error%20means%20Superset%20can%27t%20find%20or%20load%20the%20required%20SQL%20Server%20driver%20in%20your%20environment.%20This%20is%20common%20in%20recent%20Docker%20images%2C%20where%20drivers%20like%20%60pymssql%60%20or%20%60pyodbc%60%20are%20no%20longer%20included%20by%20default.%20Even%20if%20you%20installed%20%60pymssql%60%2C%20it%20may%20not%20work%20reliably%20on%20modern%20Python%20or%20Debian%20images%20due%20to%20compatibility%20issues%20with%20SQLAlchemy%202.x%20and%20Python%20%E2%89%A53.10.%20%0A%0AThe%20recommended%20solution%20is%20to%20switch%20to%20the%20%60pyodbc%60%20driver%20and%20ensure%20both%20the%20Microsoft%20ODBC%20Driver%2018%20and%20the%20%60pyodbc%60%20Python%20package%20are%20installed%20in%20your%20Superset%20image.%20Here%E2%80%99s%20how%20you%20can%20do%20it%3A%0A%0A1.%20%2A%2AUpdate%20your%20Dockerfile%2A%2A%20%28for%20Debian%2012/bookworm%29%3A%0A%0A%20%20%20%60%60%60dockerfile%0A%20%20%20FROM%20apache/s uperset%3Alatest%0A%0A%20%20%20USER%20root%0A%0A%20%20%20RUN%20apt-get%20update%20%26%26%20%5C%0A%20%20%20%20%20%20%20apt-get%20install%20-y%20build-essential%20libpq-dev%20unixodbc-dev%20curl%20gnupg2%20%26%26%20%5C%0A%20%20%20%20%20%20%20curl%20-sSL%20https%3A//packages.microsoft.com/keys/microsoft.asc%20%7C%20gpg%20--dearmor%20%3E%20/etc/apt/trusted.gpg.d/microsoft.gpg%20%26%26%20%5C%0A%20%20%20%20%20%20%20curl%20-sSL%20https%3A//packages.microsoft.com/config/debian/12/prod.list%20-o%20/etc/apt/sources.list.d/mssql-release.list%20%26%26%20%5C%0A%20%20%20%20%20%20%20apt-get%20update%20%26%26%20%5C%0A%20%20%20%20%20%20%20ACCEPT_EULA%3DY%20apt-get%20install%20-y%20msodbcsql18%20%26%26%20%5C%0A%20%20%20%20%20%20%20pip%20install%20--no-cache-dir%20pyodbc%20%26%26%20%5C%0A%20%20%20%20%20%20%20apt-get%20clean%0A%0A%20%20%20USER%20superset%0A%20%20%20%60%60%60%0A%20%20%20%5BReference%5D%28https%3A//github.com/apache/superset/issues/36183%23issuecomment-3552040461%29%0A%0A2.%20%2A%2ARebui ld%20your%20Docker%20image%20and%20restart%20Superset%2A%2A.%0A%0A3.%20%2A%2AUse%20the%20correct%20SQLAlchemy%20connection%20string%2A%2A%20for%20SQL%20Server%20with%20pyodbc%2C%20making%20sure%20the%20ODBC%20string%20is%20URL-encoded%20once%20%28not%20double-encoded%29%3A%0A%0A%20%20%20%60%60%60%0A%20%20%20mssql%2Bpyodbc%3A///%3Fodbc_connect%3DDriver%253D%257BODBC%2BDriver%2B18%2Bfor%2BSQL%2BServer%257D%253BServer%253D%3Cyour_server%3E%253BDatabase%253D%3Cyour_db%3E%253BUid%253D%3Cyour_user%3E%253BPwd%253D%3Cyour_password%3E%253BEncrypt%253Dyes%253BTrustServerCertificate%253Dno%253BConnection%2520Timeout%253D30%253B%0A%20%20%20%60%60%60%0A%20%20%20%5BReference%5D%28https%3A//github.com/apache/superset/discussions/33957%23discussioncomment-13640505%29%0A%0A4.%20%2A%2AVerify%20driver%20installation%2A%2A%20by%20running%20%60python%20-c%20%22import%20pyodbc%3B%20print%28pyodbc.drivers%28%29%29%22%60%20inside%20your%20container.%20You%20should%20see%20%60ODBC%20Driver%2018%20for%20SQL% 20Server%60%20in%20the%20output.%0A%0AIf%20you%20still%20have%20issues%2C%20please%20share%20your%20exact%20connection%20string%20and%20clarify%20if%20you%E2%80%99re%20running%20Superset%20in%20Docker%2C%20Kubernetes%2C%20or%20another%20environment.%20Also%2C%20check%20the%20Superset%20logs%20for%20any%20additional%20stacktrace%20details.%0A%0ALet%20me%20know%20if%20you%20need%20a%20sample%20Dockerfile%20for%20Ubuntu%2022.04%20or%20further%20troubleshooting%20steps%21> > [image: Join Discord] <https://go.dosu.dev/discord-bot> [image: Share on > X] > <https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/issues/37560> > > — > Reply to this email directly, view it on GitHub > <https://github.com/apache/superset/issues/37560#issuecomment-3822118707>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/BCNYORT4WILKJ6ADSBVYX7T4JL34VAVCNFSM6AAAAACTMZQOACVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTQMRSGEYTQNZQG4> > . > You are receiving this because you authored the thread.Message ID: > ***@***.***> > GitHub link: https://github.com/apache/superset/discussions/37650#discussioncomment-15687804 ---- This is an automatically sent email for [email protected]. To unsubscribe, please send an email to: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
