Welcome to the development build guide for the mssql-python project!
This guide will help you set up your environment, build the native bindings, and package the project as a Python wheel.
- Prerequisites
- Platform-Specific Setup
- Building Native Bindings
- Building the Python Wheel (.whl)
- Running Tests
- Directory Structure
- Troubleshooting
- Python: Minimum supported version is 3.10.
Ensurepythonandpipcommands refer to your Python 3.10+ installation. - pybind11: Used for C++/Python bindings.
- CMake: For Unix and macOS builds.
- Microsoft ODBC Driver: For packaging driver dependencies and header files such as
sql.h,sqlext.hetc. - setuptools, wheel, pytest: For building and testing (
pip install setuptools wheel pytest).
- Install Python (3.10+ from python.org).
- Install Visual Studio Build Tools
- Include the “Desktop development with C++” workload.
- CMake is included by default.
- Install Microsoft ODBC Driver for SQL Server:
Download here. - Install required Python packages:
# Will install pybind11, setuptools etc. pip install -r requirements.txt
- Install Python (3.10+ from python.org).
- Install CMake:
brew install cmake
- Install Microsoft ODBC Driver for SQL Server:
- Follow official instructions.
- Install Python requirements:
# Will install pybind11, setuptools etc. pip install -r requirements.txt
- Install Python and development tools:
Ensure
sudo apt-get update sudo apt-get install python3 python3-dev python3-pip build-essential cmake
pythonandpiprefer to Python 3.10+. - Install Microsoft ODBC Driver for SQL Server:
- Follow official instructions.
- Install Python packages:
# Will install pybind11, setuptools etc. pip install -r requirements.txt
The native bindings are in the pybind directory.
Open a Developer Command Prompt for VS and run:
cd pybind
build.batThis will:
- Clean previous builds
- Configure with CMake
- Build the extension
- Copy the generated
.pydfile to the correct location
cd pybind
./build.shThis will:
- Clean previous builds
- Configure with CMake
- Build the extension
- Copy the generated
.sofile to the correct location
Tests require a database connection string.
Set the DB_CONNECTION_STRING environment variable before running tests:
set DB_CONNECTION_STRING=your-connection-string-here
python -m pytest -vexport DB_CONNECTION_STRING=your-connection-string-here
python -m pytest -vThe wheel includes the native bindings.
You must build the native bindings first (see above).
From the project root:
python setup.py bdist_wheelThe wheel file will be created in the dist/ directory.
From the project root:
# Build the bindings first!
cd pybind
./build.sh
cd ..
# Then build the wheel:
python setup.py bdist_wheelThe wheel file will be created in the dist/ directory.
pybind/— Native C++/pybind11 bindings and platform build scriptsmssql_python/— Python package sourcetests/— Test suitedist/— Built wheel packages
- Ensure all prerequisites are installed and on your PATH.
- If a build fails, clean up old artifacts and try again (
pybind/build.bat cleanor./build.sh clean). - For wheel issues, ensure the native binding (
.pydor.so) is present in the expected location before building the wheel. - For test failures, double-check your
DB_CONNECTION_STRING.
For more details on the native bindings, see pybind/README.md.
Happy coding!