October 23, 2024
Chicago 12, Melborne City, USA
python

ODBC Driver Error: File Not Found When Running Python Script in Docker Container


I’m running a Python script (sharepoint_to_json.py) inside a Docker container that connects to a SQL Server database using the ODBC driver. My goal is to convert data from an Excel (.xlsx) file into JSON format within my server, using the sharepoint_to_json.py script. This process should run inside the Docker container after establishing a connection to a SQL Server database.

I have already installed the msodbcsql17 driver in the container, and my connection to the database works when running other scripts. However, when I try to run the sharepoint_to_json.py script, I encounter the following error:

Ocorreu um erro ao processar o arquivo Excel: (‘01000’, "[01000] [unixODBC][Driver Manager]Can’t open lib ‘/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1’ : file not found (0) (SQLDriverConnect)")

Here’s the relevant part of my Dockerfile:

FROM python:3.12

RUN apt-get update && apt-get install -y
curl
gnupg2
apt-transport-https
unixodbc
unixodbc-dev
python3-distutils
build-essential
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add –
&& curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
&& apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17

Set the working directory in the container

WORKDIR /app

Upgrade pip, setuptools, wheel to ensure the latest versions

RUN pip install –upgrade pip setuptools wheel

Copy the requirements.txt file

COPY requirements.txt .

Install the dependencies

RUN pip install -r requirements.txt

Copy the project files

COPY . /app/

Expose port 8000

EXPOSE 8000

Set environment variable to indicate that Django is running in the container

ENV PYTHONUNBUFFERED 1

Default command

CMD ["sh", "-c", "python wait_for_db.py && python manage.py makemigrations && python manage.py migrate && python test_connection.py && python sharepoint_to_json.py && python manage.py runserver 0.0.0.0:8000"]

I verified that the msodbcsql17 driver is installed correctly in the container.
I checked the path /opt/microsoft/msodbcsql17/lib64/, but the file libmsodbcsql-17.9.so.1.1 does not seem to exist.
I ensured that my odbcinst.ini is properly configured.

My Questions:
Why does the driver seem to work for other scripts but fail for this particular one (sharepoint_to_json.py)?
How can I fix the missing file error in my Docker setup?
Is there a better way to verify if the ODBC driver is correctly installed and recognized within the container?
Any guidance would be greatly appreciated!



You need to sign in to view this answers

Leave feedback about this

  • Quality
  • Price
  • Service

PROS

+
Add Field

CONS

+
Add Field
Choose Image
Choose Video