pymssql is the Python language extension module that provides access to
Microsoft SQL Servers from Python scripts. It is compliant with Python
DB-API 2.0 Specification and works on most popular operating systems.
Provides
Requires
License
LGPL-2.1-only
Changelog
* Fri Nov 28 2025 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to version 2.3.9
* Fix build with Cython-3.2.0
* Wed Oct 15 2025 Martin Hauke <mardnh@gmx.de>
- Update to version 2.3.8
* No functional changes
* Wed Aug 06 2025 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to version 2.3.7
* Allow to specify openssl dependency on macos
- from version 2.3.6
* Build manylinux wheels using manylinux2014 image
- Use Python 3.11 on SLE-15 by default
* Thu Jun 26 2025 Martin Hauke <mardnh@gmx.de>
- Update to version 2.3.5
* Make mssql cython 3.1.0 compatible
* Fix sqlalchemy.orm.exc.MappedAnnotationError in tests.
* Add py.typed which marks pymssql as suporting typechecks.
* Sat Nov 23 2024 Martin Hauke <mardnh@gmx.de>
- Update to version 2.3.2
* Update FreeTDS to 1.4.23.
* Workaround setuptools-74.0 changes.
* Sat Aug 31 2024 Dirk Müller <dmueller@suse.com>
- update to 2.3.1:
* Fix SP returning NULL (closes #441).
* Update FreeTDS to 1.4.22 (closes #895).
* Require Cython>3.0.10.
* Add python 3.13 Linux wheels (closes #900).
* Sun Apr 07 2024 Martin Hauke <mardnh@gmx.de>
- Update to version 2.3.0
General
* Add python 3.12 support.
* 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.
* 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
* Return instance of datetime.datetime on select from
SQLDATETIM4, SQLDATETIME, SQLDATETIME2 columns.
Bug fixes
* Fix SQLDATETIME2 handling in convert_python_value().
* Use four digits for the year in SP args binding.
* Fix convert_python_value to work with datetime.date.
* Check if C compiler is installed if check for clock_gettime
fails.
* Add missing charset parameter in the _substitute_params method
when calling ensure_bytes.
* Fix empty, zero or None parameter substitution.
Internals
* Add tests for fetchall(), fetchmany(), fetchone() and next()
with SP.
* Require Cython>3.0.7.
* Use Cython 3 for compilation.
* Add SQLTIME and SQLDATETIME2 to convert_python_value.
* Use dbanydatecrack() function instead of dbdatecrack().
* Replace DEF with cdef enum for buffer array size
* Remove references to tox.
* Add tests for timeout in wait callback.
* 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.
* Thu Dec 14 2023 Martin Hauke <mardnh@gmx.de>
- Update to version 2.2.11
General
* Add datetime.date to SQLDATE conversion.
* Add encryption parameter to connect.
Bug fixes
* Fix version parsing in development.
* Add missing charset parameter when formatting query.
* Use four digits for the year in SP args binding.
* Fix convert_python_value to work with datetime.date.
* Mon Oct 30 2023 Martin Hauke <mardnh@gmx.de>
- Update to version 2.2.10
* Add python 3.12 support.
* Do not try to drop temporary tables in clear_db().
* test_sqlalchemy: update for compatib