Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

DB API 2.0-compliant Linux driver for SQL Server

Project Description

cTDS is a full Python DB API-2.0-compliant SQL Server database library for Linux, Windows, and Mac OS X supporting both Python 2 and Python 3.


  • Supports Microsoft SQL Server 2008 and up.
  • Complete DB API-2.0 support.
  • Python 2.6, Python 2.7, Python 3.3, Python 3.4, Python 3.5, and Python 3.6 support.
  • Bulk insert (bcp) support.
  • Written entirely in C.



The full documentation for cTDS can be found here.

Generate documentation using the following:

make doc
# Generated to ./.gh-pages

Documentation is hosted on GitHub Pages. As such, the source code for the documentation pages must be committed to the master branch in order to update the live documentation.


Local development and testing is supported on linux-based systems running Docker. Docker containers are used for both running a local instance of SQL Server on Linux and creating containers for each combination of Python and FreeTDS version supported.

Local development can be done by simply installing ctds against the system versions of FreeTDS and Python.

# Install as a "develop" egg
pip install -e .

# Install tests.
pip install -e .[tests]

# Run tests (requires SQL Server running)
python test

However, given the various supported combinations of FreeTDS and Python, it is easier to create a separate Docker container for each.

Development and testing will require an instance of SQL Server on Linux running for validation. A script is provided to start a Docker container running the database and create the login used by the tests.

# Start a docker-based SQL Server instance.
make start-sqlserver

# Run tests as needed ...

# Stop the docker-base SQL Server instance.
make stop-sqlserver


Testing is designed to be relatively seemless, using Docker containers and SQL Server on Linux. All test targets will ensure a running database instance docker container exists and is accessible prior to running.

To run the tests against the most recent versions of FreeTDS and Python, use:

make test

To run the tests against an arbitrary version of FreeTDS and Python:

# Python X.Y & FreeTDS Z.ZZ.ZZ
make test_X.Y_Z.ZZ.ZZ

To run tests against all supported versions of FreeTDS and Python and additional linting and metadata checks:

make check
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
ctds-1.5.0.tar.gz (65.3 kB) Copy SHA256 Checksum SHA256 Source Oct 16, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting