Skip to main content

DB-API interface to Microsoft SQL Server for Python. (new Cython-based version)

None None None

Project description

pymssql - DB-API interface to Microsoft SQL Server

https://github.com/pymssql/pymssql/workflows/Linux/badge.svg https://github.com/pymssql/pymssql/workflows/macOS/badge.svg https://github.com/pymssql/pymssql/workflows/Windows/badge.svg http://img.shields.io/pypi/dm/pymssql.svg http://img.shields.io/pypi/v/pymssql.svg

A simple database interface for Python that builds on top of FreeTDS to provide a Python DB-API (PEP-249) interface to Microsoft SQL Server.

Detailed information on pymssql is available on the website:

pymssql.readthedocs.io

New development is happening on GitHub at:

github.com/pymssql/pymssql

There is a Google Group for discussion at:

groups.google.com

Getting started

pymssql wheels are available from PyPi. To install it run:

pip install -U pip
pip install pymssql

Most of the times this should be all what’s needed. The official pymssql wheels bundle a static copy of FreeTDS and have SSL support so they can be used to connect to Azure.

Basic example

conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor(as_dict=True)

cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
for row in cursor:
    print("ID=%d, Name=%s" % (row['id'], row['name']))

conn.close()

Recent Changes

Version 2.3.0 - 2024-04-06 - Mikhail Terekhov

General

  • Add python 3.12 support (fix #851). Thanks to Raphael Jacob.

  • Update FreeTDS to 1.4.10.

  • Add read_only parameter for connection.

  • Add encryption parameter to connect.

  • Add use_datetime2 parameter to connect.

  • Use utf-8 for connection properties.

  • Implement batching in executemany based on optional batch_size parameter. with default equal arraysize cursor attribute (closes #332, #462).

  • Build aarch64 wheels. Thanks to Jun Tang.

  • Build musllinux wheels.

  • Some documentation fixes. Thanks to Casey Korver and Quentin LEGAY.

  • FAQ update: #877.

  • Add stubs (closes #767).

  • Fix DBAPI-2.0 compliance - DataError must be a subclass of DatabaseError.

  • Fix DBAPI-2.0 compliance: rename batchsize cursor attribute to arraysize.

  • Implement DATETIMEOFFSET handling for stored procedures.

  • Implement DATETIMEOFFSET handling for insert and select queries (fixes #649).

  • Return instance of datetime.datetime on select from SQLDATETIM4, SQLDATETIME, SQLDATETIME2 columns (closes #662, #695, #792, #844).

Bug fixes

  • Fix SQLDATETIME2 handling in convert_python_value().

  • Use four digits for the year in SP args binding (fix #454).

  • Fix convert_python_value to work with datetime.date. Thanks to Testsr.

  • Check if C compiler is installed if check for clock_gettime fails (fix #825).

  • Add missing charset parameter in the _substitute_params method when calling ensure_bytes (fix #650). Thans to Andrey Yuroshev.

  • Fix empty, zero or None parameter substitution. (fix #609).

Internals

  • Add tests for fetchall(), fetchmany(), fetchone() and next() with SP.

  • Add test for #134.

  • Require Cython>3.0.7.

  • Use Cython 3 for compilation.

  • Use docker image for MSSQL2019 as a default for tests.

  • Take FreeTDS version for PyPI wheels from pyproject.toml.

  • Check sdist with twine.

  • Use OpenSSL-1.1.1.2100 for Windows x86 wheels. Thanks to PrimozGodec (fixes #839).

  • Use OpenSSL-3.1.1 for Windows x64 wheels (FreeTDS build fails with OpenSSL-3.2.1).

  • Add SQLTIME and SQLDATETIME2 to convert_python_value.

  • Use dbanydatecrack() function instead of dbdatecrack().

  • Replace DEF with cdef enum for buffer array size (compatibility with Cython 3).

  • Remove references to tox. Thanks to Christoph Wegener.

  • Update readthedocs configuration.

  • Add tests for timeout in wait callback (#305).

  • Clean up some legacy FreeTDS shims.

  • Add tests for tds_version parameter.

  • Move check for clock_gettime to dev/ccompiler.py.

  • Remove some Python2 remnants.

  • Move FreeTDS version from workflow files to pyproject.toml.

  • Move exceptions into separate module.

  • Use strftime for date & time conversion.

  • Simplify parameters quoting.

  • Add tests for _quote_simple_value.

Version 2.2.11 - 2023-12-03 - Mikhail Terekhov

General

  • Use FreeTDS-1.4.9 for official wheels on PyPi.

  • Add workflow for aarch64 wheel. Thanks to juntangc (fix #692, #759, #791, #819, #826, #858).

  • Add datetime.date to SQLDATE conversion.

  • Add encription parameter to connect (fix #797).

Bug fixes

  • Fix version parsing in development.

  • Add missing charset parameter when formatting query (fix #650).

  • Use four digits for the year in SP args binding (fix #454).

  • Fix convert_python_value to work with datetime.date (fix #811).

Project details

None None None

Download files

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

Source Distribution

pymssql-2.3.0.tar.gz (186.3 kB view hashes)

Uploaded Source

Built Distributions

pymssql-2.3.0-cp312-cp312-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

pymssql-2.3.0-cp312-cp312-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.12 Windows x86

pymssql-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (4.6 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp312-cp312-musllinux_1_2_i686.whl (4.3 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

pymssql-2.3.0-cp312-cp312-musllinux_1_1_x86_64.whl (4.1 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp312-cp312-musllinux_1_1_i686.whl (4.1 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

pymssql-2.3.0-cp312-cp312-manylinux_2_28_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (4.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp312-cp312-macosx_12_0_universal2.whl (2.3 MB view hashes)

Uploaded CPython 3.12 macOS 12.0+ universal2 (ARM64, x86-64)

pymssql-2.3.0-cp311-cp311-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

pymssql-2.3.0-cp311-cp311-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.11 Windows x86

pymssql-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (4.6 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp311-cp311-musllinux_1_2_i686.whl (4.4 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

pymssql-2.3.0-cp311-cp311-musllinux_1_1_x86_64.whl (4.2 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp311-cp311-musllinux_1_1_i686.whl (4.1 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

pymssql-2.3.0-cp311-cp311-manylinux_2_28_x86_64.whl (4.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (4.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp311-cp311-macosx_12_0_universal2.whl (2.3 MB view hashes)

Uploaded CPython 3.11 macOS 12.0+ universal2 (ARM64, x86-64)

pymssql-2.3.0-cp310-cp310-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

pymssql-2.3.0-cp310-cp310-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.10 Windows x86

pymssql-2.3.0-cp310-cp310-musllinux_1_2_x86_64.whl (4.5 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp310-cp310-musllinux_1_2_i686.whl (4.3 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

pymssql-2.3.0-cp310-cp310-musllinux_1_1_x86_64.whl (4.0 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp310-cp310-musllinux_1_1_i686.whl (4.0 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

pymssql-2.3.0-cp310-cp310-manylinux_2_28_x86_64.whl (4.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (3.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.5 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

pymssql-2.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (3.4 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

pymssql-2.3.0-cp310-cp310-macosx_12_0_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.10 macOS 12.0+ x86-64

pymssql-2.3.0-cp39-cp39-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

pymssql-2.3.0-cp39-cp39-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.9 Windows x86

pymssql-2.3.0-cp39-cp39-musllinux_1_2_x86_64.whl (4.5 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp39-cp39-musllinux_1_2_i686.whl (4.3 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

pymssql-2.3.0-cp39-cp39-musllinux_1_1_x86_64.whl (4.0 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp39-cp39-musllinux_1_1_i686.whl (4.0 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

pymssql-2.3.0-cp39-cp39-manylinux_2_28_x86_64.whl (4.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (3.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.5 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

pymssql-2.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (3.4 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

pymssql-2.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ x86-64

pymssql-2.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (2.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

pymssql-2.3.0-cp39-cp39-macosx_12_0_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.9 macOS 12.0+ x86-64

pymssql-2.3.0-cp38-cp38-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

pymssql-2.3.0-cp38-cp38-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.8 Windows x86

pymssql-2.3.0-cp38-cp38-musllinux_1_2_x86_64.whl (4.5 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp38-cp38-musllinux_1_2_i686.whl (4.3 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

pymssql-2.3.0-cp38-cp38-musllinux_1_1_x86_64.whl (4.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp38-cp38-musllinux_1_1_i686.whl (4.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

pymssql-2.3.0-cp38-cp38-manylinux_2_28_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (4.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

pymssql-2.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (3.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

pymssql-2.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (3.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ x86-64

pymssql-2.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (2.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

pymssql-2.3.0-cp38-cp38-macosx_12_0_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.8 macOS 12.0+ x86-64

pymssql-2.3.0-cp37-cp37m-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.7m Windows x86-64

pymssql-2.3.0-cp37-cp37m-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.7m Windows x86

pymssql-2.3.0-cp37-cp37m-musllinux_1_2_x86_64.whl (4.4 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp37-cp37m-musllinux_1_2_i686.whl (4.1 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.2+ i686

pymssql-2.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl (3.9 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp37-cp37m-musllinux_1_1_i686.whl (3.8 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

pymssql-2.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl (4.5 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (3.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.3 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

pymssql-2.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (3.2 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

pymssql-2.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.9 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.5+ x86-64

pymssql-2.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl (2.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.5+ i686

pymssql-2.3.0-cp37-cp37m-macosx_12_0_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.7m macOS 12.0+ x86-64

pymssql-2.3.0-cp36-cp36m-win_amd64.whl (2.0 MB view hashes)

Uploaded CPython 3.6m Windows x86-64

pymssql-2.3.0-cp36-cp36m-win32.whl (1.3 MB view hashes)

Uploaded CPython 3.6m Windows x86

pymssql-2.3.0-cp36-cp36m-musllinux_1_2_x86_64.whl (4.4 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.2+ x86-64

pymssql-2.3.0-cp36-cp36m-musllinux_1_2_i686.whl (4.1 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.2+ i686

pymssql-2.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl (3.8 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

pymssql-2.3.0-cp36-cp36m-musllinux_1_1_i686.whl (3.8 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

pymssql-2.3.0-cp36-cp36m-manylinux_2_28_x86_64.whl (4.5 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.28+ x86-64

pymssql-2.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

pymssql-2.3.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (3.7 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

pymssql-2.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

pymssql-2.3.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.3 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

pymssql-2.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl (3.2 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686

pymssql-2.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.8 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.5+ x86-64

pymssql-2.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl (2.7 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.5+ i686

pymssql-2.3.0-cp36-cp36m-macosx_10_14_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.6m macOS 10.14+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page