Change logΒΆ

Change Log

Version 2.0.1 - 2013-10-27 - `Marc Abramowitz <>`_
* Add "\*.rst" to prevent install error: "IOError: [Errno 2] No
  such file or directory: 'ChangeLog_highlights.rst'"

Version 2.0.0 - 2013-10-25 - `Marc Abramowitz <>`_
* First official release of pymssql 2.X (`Cython`_-based code) to `PyPI`_!
* Compared to pymssql 1.X, this version offers:

  * Better performance
  * Thread safety
  * Fuller test suite
  * Support for Python 3
  * Continuous integration via `Travis CI`_
  * Easier to understand code, due to `Cython`_

.. _PyPI:
.. _Travis CI:
.. _Cython:
.. _ChangeLog:

Version 2.0.0b1-dev-20130403 - 2013-04-03 - Marc Abramowitz <>
	* Added tag 2.0.0b1-dev-20130403 for changeset 5d0c980ef8b8
	* Fix issue 118 ("datetime conversion to sql is not converting
	sub-seconds correctly") - Pad microseconds to 3 digits so it gets
	converted correctly. Thanks, Ken Robbins (kenneth.robbins at gmail)!
	* Make tests/ actually run tests. It looked like it was
	half-finished and not working. This fills it out and makes it work and
	actually test a few things. (5373541eb899)
	* Make it possible to use `python test`
	* Bunch of fixes to eliminate build/install warnings (adb0fc75bfd0,
	fe6cb9aa5120, 446f0005e638, e8d4b19d87b1, 90b2aa2ea01f, 7bb29af4b22c)
	* Add `pymssql.get_dbversion` function that wraps the dbversion
	function in FreeTDS. (1158a5d2be9c)
	* Add a `get_freetds_version` function (a4286224dcf2)
	* Fix issue 109 ("Failure to pass Unicode characters to callproc;
	failing test:
	Skip test because it fails with some versions of FreeTDS but passes
	with others. (d05341273673)
	* Fix issue 116 ("A few tests fail if running on a system that has SQL
	Server available on port 1433") (0fc4086447fe)
	* Modify tests/ to use server='dontnameyourserverthis'
	when doing various tests so it doesn't try to connect to a SQL
	Server listening on localhost:1433 (0fc4086447fe)
	* tox.ini: Add {posargs:-w tests -v} to nosetests invocation so that
	we can pass arguments to tox -- e.g.: to run only specific tests
	* tox.ini: Add "ipdb" to deps, because the IPython debugger is very
	nice for debugging why tests are failing (be9ee40156cb)
	* Fix issue 114 ("Fix SP name handling in threaded test so we can
	actually run it.") (6ac2b75747ad)
	* Fix issue 100 (Error when executing {build,develop} on a
	system with no setuptools: "name 'STDevelopCmd' is not defined")
	* Issue 45 ("Make SQLAlchemy tests part of our testing process"): Add
	tests/ for running the SQLAlchemy test suite
	with pymssql using the server configured in tests/tests.cfg
	* Fix issue 92 ("Cursor fetch* methods return redundant keys for
	column names and column numbers.") (08ae783880dd)
	* tests/
	bug 18 ("FetchAll fails to return rows when running against a
	connection instantiated with as_dict=True."): Add a test which
	illustrates that the issue is resolved. (058d761cc761)
	* Fix issue 60 ("cursor.execute raise UnicodeDecodeError if query and
	params in unicode"): Add patch from tonal.promsoft and add tests.
	* Add *.c to so they get included in sdist and end-users
	don't need to run Cython. (25c1a84aac0c)
	* Fix issue 56 ("callproc do not accept None and unicode string in
	parameters"): Add patch from tonal.promsoft and add tests
  * version 2.0.0b1-dev-20130403

Version 2.0.0b1-dev-20130108 - 2013-01-08 - Marc Abramowitz <>
    * change: put compiled FreeTDS for Windows in pymmsql source, add build
	instructions to README, better Visual Studio support (#61)
    + feature: support hostname, port, tds_version connect params without freetds.config
    + feature: make pymssql.Cursor.rownumber give accurate results for executemany()
    + feature: bundle FreeTDS libraries & use static libary includes to avoid
        most end-user-developers needing to mess with FreeTDS
    * change: speed up handling of tuples/lists when quoting (dieterv77)
    - bug #46: better handling for byte strings that don't represent ascii data
    - bug: custom param handling avoids bugs when '%' is used in the SQL (modulus operator)
    - bug: fix pymssql.DBAPIType so that comparisons work as expected
    - bug: fetch*() functions would erroneously raise OperationalError when rows exhausted
    - bug #47: fix threaded tests crashing
    - bug #79: fix prevision problem with floats (dieterv77)
		- bug #14: Add voodoo that undoes setuptools monkeypatching
		that causes `pip install` to not work with setuptools unless pyrex
		is installed. (86a73a19d5bd)
		- bug #106 (OS X: "Symbol not found: _dbadata" error when importing
		pymssql): Fix OS X build by modifying so that on OS X we
		don't attempt to link with the bundled FreeTDS *Linux* library.
		+ feature: Add support for running tox ( to
		test across multiple Python versions. (5fa7a6548b31)
		- bug #44: Remove test_long_identifiers from
		because SQLAlchemy removed the 30 character limit on identifiers.
		- feature: Add voodoo so that Cython can automatially be
		downloaded if it's not installed instead of an ImportError
		- bug #105: Link with librt on Unix platforms that have it (like
		Linux, but not FreeBSD or OS X) to prevent 'undefined symbol:
		clock_gettime' error when importing pymssql. (2b255b1c035f)

Tue Nov 02 09:33:00 2010 Damien Churchill <>
	* _mssql.pyx:
		+ feature: add support for nullable ints and nullable bits in
		           stored procedure parameters.
		+ feature: add support for positional parameters in stored
		+ bugfix:  add support for using type subclasses as parameters
		+ bugfix:  correctly report incorrect logins.
		+ feature: add support for setting the application name
		+ bugfix:  accept more than just the decimal.Decimal type for
		           money and decimal parameters.
		+ bugfix:  fix raising exceptions from convert_python_value()
		+ bugfix:  fix binding parameters of int type when larger than
		           2^31 - 1 (raise exception).
		+ bugfix:  use sprintf rather than python strings in the msg_handler
		+ bugfix:  use sprintf rather than python strings in the err_handler
		+ bugfix:  make compatible with Cython 0.13
		+ feature: remove the trusted parameter to connect()
		+ bugfix:  fix issue 15, not setting implicit_transactions on connect
		+ bugfix:  fix issue 32, setting the wrong hostname on login
	* pymssql.pyx:
		+ feature: add initial support for callproc()
		+ feature: add support for setting the application name
		+ bugfix:  fix issue #7, thanks has.temp3
		+ bugfix:  fix issue #10, rowcount property being incorrect
		+ bugfix:  make compatible with Cython 0.13
		+ feature: remove the trusted parameter to connect()
		+ feature: add returnvalue property with the result of a callproc()
		+ feature: fix raising exceptions when args[0] is not a string
		+ feature: include the tests
		+ bugfix:  include
		+ bugfix:  fix issue #8, ZipFile don't has the attribute
		           'extractall' error for python2.5
	* version 1.9.909

Wed Apr 28 11:10:00 2010 Damien Churchill <>
		+ bugfix: fix recursive-include for .pyrex
	* version 1.9.908

Wed Apr 21 16:02:00 2010 Damien Churchill <>
		+ bugfix: include missing .pyrex folder
	* version 1.9.907

Fri Apr 09 13:16:00 2010 Damien Churchill <>
		+ bugfix: include hack faking that pyrex is installed to workaround
		          a bug in setuptools.
	* _mssql.pyx:
		+ bugfix: add support for connecting using "." and "(local)"
	* pymssql.pyx:
		+ feature: add the output type to be used with callproc()
		+ depreciate: the dsn keyword param to pymssql.connect()
		+ feature: add the get/set_max_connections to pymssql
	* sqlfront.pxd:
		+ feature: tidy up and remove all unused methods.
	* version 1.9.906

Mon Nov 23 13:37:00 2009 Damien Churchill <>
	* _mssql.pyx:
		+ feature: add support for varbinary types
		+ feature: add support for passing in charset to _quote_data
		+ bugfix: rename MSSQLConnection.next_result to
		          MSSQLConnection.nextresult as before
		+ bugfix: set the charset upon login
		+ feature: rewrite _remove_locale using C types instead, 20x faster
		+ feature: add a charset param to quote_data and relating funcs that
		           allows the charset to be specified for unicode encodes.
	* pymssql.pyx:
		+ feature: add DSN support that was missing
		+ bugfix: fix rowcount property
	* sqlfront.pxd:
	* tests:
		+ feature: add test for multiple results
		+ feature: fix building on windows
		+ feature: clean generated C files in the clean command
		+ feature: automatically extract on windows when
	* version 1.9.903

Fri Nov 20 13:03:00 2009 Damien Churchill <>
	* mssqldbmodule.c: deprecated in favour of _mssql.pyx
	* deprecated in favour of
	+ feature: added support for uniqueidentifier types
	+ feature: added support for calling remote procedures programmatically
	* version 1.9.901

Tue May 12 15:43:00 2009  Andrzej Kukula <>
	* mssqldbmodule.c:
		+ bugfix: pymssql didn't return second, third etc. result set
			in case of multi-result statements, e.g. 'SELECT 1; SELECT 2',
			thanks Damien Churchill <>

Wed Apr 29 19:31:00 2009  Andrzej Kukula <>
	* mssqldbmodule.c:
	  + fixed possible memory leak, thanks Evgeny Cherkashin

Tue Apr 23 23:00:00 2009  Andrzej Kukula <>
	+ bugfix: fixed rare quoting bug in select_db()
	+ feature: added 'max_conn' parameter to pymssql.connect() and
	  _mssql.connect() which defaults to 25, thanks Daniel Watrous
	* nagios-plugin update - thanks Josselin Mouette <>:
	  + Include a -P port option, to avoid having to passing it with the
		host name
	  + Fix the encoding of the comments; utf-8 is the declared encoding
		of the file and must be followed
	  + Fix a typo in the SQL syntax
	  + Connect explicitly to the "master" database (required since 1.0.0)
	  + Improve perfdata output.
	* version 1.0.2

Tue Apr 21 22:56:00 2009  Andrzej Kukula <>
	* mssqldbmodule.c:
	  + bugfix in format_and_run_query(): query strings were sometimes
		overwritten with garbage due to DECREF in wrong place; thanks
		Igor Nazarenko <>
	  + bugfix in get_result(): if a query batch contained DECLARE or
		possibly other T-SQL statements, no results were returned
		thanks Kay Schluehr <>
	  + bugfix in execute_scalar(): check if there are any columns in result
	  + bugfix: check for FAIL after each dbnextrow()
	  + feature: Add support for bigint - #2660972; thanks Alexandr
		Zamaraev <>
	* pymssql.c:
	  + bugfix in execute(): if execute is called without second argument,
		don't treat '%' in query string as formatting character; restored
		compatibility with common sense and with pymssql < 1.0.0; thanks
		Corey Bertram <>,
		Wes McKinney <>
	  + feature: it is possible to specify 'as_dict' to pymssql.connect
		and rows will be returned as dictionaries instead of tuples;
		thanks Daniel Watrous <>

Thu Jan 30 18:36:00 2009  Andrzej Kukula <>
	* mssqldbmodule.c:
	  + Pyssize_t error on x64 - thanks Josselin Mouette <>
	  + critical charset updates, thanks Josselin Mouette <>
	  + more Py_ssize_t updates, further code cleanups
	  + fixed some compiler warnings
	  + execute() failed, thanks Josselin Mouette <>
	  + critical charset updates, thanks Josselin Mouette <>
	  + removed warnings, users don't want them and they are not 'MUST'
		priority in DB-API spec
	* nagios-plugin: introducted Nagios plugin, thanks Julien Blache
	  and Josselin Mouette
	* version 1.0.1

Thu Jan 29 19:23:00 2009  Andrzej Kukula <>
	* version 1.0.0
	* so many changes I'll not put them here, I'll document
	  changes from now on.

Mon Sep 25 20:18:00 2006  Andrzej Kukula <>
	* fix for Fink (http://Fink.SF.Net) under OS X (thanks
	  Terrence Brannon <>)

Sun Sep 24 10:44:00 2006  Andrzej Kukula <>
	  + it can now dynamically determine the path to SQL 2000 Developer
		Tools, if win32api and win32con modules are available
	  + simple Python version check to prevent most frequently asked
	  + version 0.8.0

Wed Sep 13 01:20:00 2006  Andrzej Kukula <>
	* mssqldbmodule.c:
	  + corrected misspellings in docstrings
	  + fixed segfault on connection close with Python 2.5; thanks
		Justin Francis <>
	  + fixed two minor DB-API incompatibilities (thanks Matthew Good
	  + fixed datetime quoting (thanks Jan Finell <>)
	* pymssql should be able to build on cygwin (thanks
	* docstring fixes, webpage doc updates

Tue May 15 03:18:00 2006  Jooncheol Park <>
	*, PKG-INFO, README: license change to LGPL

Wed Mar 15 08:18:00 2006  Andrzej Kukula <>
	* fixed datetime issue (thanks Jan Finell

Fri Feb 24 16:11:00 2006  Andrzej Kukula <>
	* mssqldbmodule.c: fixed typos in docstrings (thanks Konstantin

Tue Dec 27 15:14:00 2005  Andrzej Kukula <>
	* mssqldbmodule.c: bug fixes, improvements and cleanups:
	  + implemented set_login_timeout() and set_query_timeout() functions;
	  + eliminated unnecessary ODBC code
	  + cleaned up exception code and improved exception handling,
		SF bug #1335560
	  + web page now correctly mentions FreeTDS 0.63 as the minimal
		required version
	  + stdmsg() method is now deprecated; all errors are concatenated
		in errmsg()
	  + implemented min_error_severity: all errors at or above that
		level will raise the exception; if the severity is lower, they
		will just accumulate in errmsg()
	  + added setting coltype to NUMBER for float types (found by
		Jakub Labath)
	  + reincarnated ntwdblib.dll which turned out to be redistributable
		after all; pymssql includes the latest version that allows
		connecting to SQL 2005; eliminated some stupid notes from the
		web page and will ease set up process for users
	* new file
	  + provided by Jakub Labath, this file performs some basic DB-API
		compliance tests; it immediately triggered the unicode bug
	* version 0.7.4

Sat Oct 22 19:41:00 2005  Andrzej Kukula <>
	* mssqldbmodule.c: multithreading improvements - from now on pymssql
	  is thread-safe, it releases GIL in proper places; idea and initial
	  patch by John-Peter Lee (thanks very much!)

Mon Sep 5 23:29:00 2005  Andrzej Kukula <>
	* fixed an installation issue regarding importing pymssql
	  that imports _mssql which isn't installed, and blows up with
	  AttributeError... (thanks Vsevolod Stakhov)
	* version 0.7.3

Mon Sep 5 00:32:00 2005  Andrzej Kukula <>
	* version 0.7.2

Sun Sep 4 23:12:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: improvements and cleanups:
	  + improved error handling: if the db function fails, the exception
		is thrown automatically and immediately; no need to check
		return value of conn.query(), just catch _mssql.error
	  + improved error handling: it is possible that MS SQL calls message
		handler twice; now _mssql catches and reports both of them at once
	  + improved error handling: in some cases _mssql.query() returns
		success but the results are invalid; now it is handled properly
		(example "SELECT CAST(1234.5678 AS NUMERIC(4,2))")
	  + added proper connection initialization: a number of SET statements
		are executed upon connection setup to set sensible SQL behaviour;
		see source for details; one needs to unset them if needed
	  + implemented min_{message|error}_severity as it is in php_mssql
		to ignore unimportant errors; it's work in progress
	  + new function rmv_lcl() initially by Mark Pettit, to strip locale
		crap from MONEY values converted to SQLCHAR while generating
		Decimal object
	  + other small fixes, improvements and janitorial work

Tue Aug 30 00:16:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: new features:
	  + large numbers (DECIMAL, NUMERIC, MONEY, SMALLMONEY) are returned
		as Decimal object -- this helps maintain accuracy; thanks to
		Mark Pettit for help
	  + COMPUTE clauses are supported (it wouldn't fetch data for those
		columns before)
	  + ROWID type has been removed from _mssql module
	  + new type DECIMAL to denote Decimal objects in result set

Mon Aug 29 21:59:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: some improvements:
	  + BIT values are returned as Python bool objects, suggested by
		Mark Pettit
	  + close() method returns None on success (not to be used at all)
		and throws exception on error
	  + fixed use of uninitialized value when parsing SMALLDATETIME
	  + another round of performance improvements in GetRow() - eliminated
		unnecessary data conversions and unneeded DB-Lib calls
	  + janitorial fixes

Mon Aug 22 04:35:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: massive diff:
	  + fixed bug with fetching query results of some data types;
		found by Mark Pettit
	  + fixed IndexError when query returns no rows; patch by Jakub Labath
	  + rewritten function GetRow() that fetches query results: performance
		improvements, better handling of result data types; datetime
		is returned as datetime object instead of string (it's more
		consistent with other values -- and more pythonic :)
	  + eliminated DetermineRowSize()
	  + cleanups: _mssql_init() further improvements w.r.t. Python API
	  + janitorial fixes
	  + added licensing information
	* docstring changed to look nicer with help()
	* version 0.7.2

Thu Aug 11 02:12:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: improved module init function: added doc string,
	  made compliant with Python 2.0+ module interface (there are no more
	  coredumps on help())
	* mssqldbmodule.c: documented that _mssql.connect() is not portable
	  between FreeTDS-dependent platforms and Windows platforms; documented
	  host:port usage

Sat Jul 23 14:20:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: eliminated problems with Python exiting upon
	  invalid login credentials with FreeTDS - the culprit was INT_EXIT
	  and FreeTDS setting DBDEAD
	* mssqldbmodule.c: added better error messages (esp. on Windows)
	* mssqldbmodule.c: added msg_handler and err_handler debugging
	* 0.7.1 packages re-released

Fri Jul 22 03:19:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: major change; module revamped to support some
	  more builtin Python features; some redundant code removed; memset()
	  removed as there were no benefits but performance decrease
	* mssqldbmodule.c: help(_mssql) works; help for conn object works too
	* _quote: removed escaping backslash -- with MSSQL it is
	  only needed to escape single quotes by duplicating them
	* pymssqlCnx class: added a few checks to properly support
	  DB-API 2.0 (see .close() in PEP 249)
	* version 0.7.1

Wed Jul 20 22:12:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: removed the workaround for date issue; there were
	  more problems than benefits
	* mssqldbmodule_tds.c: removed
	* some more cleanups and corrections

Tue Jul 19 14:23:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: major change; many portability problems fixed
	* mssqldbmodule.c: eliminated port setting; this is job for freetds.conf
	* mssqldbmodule_tds.c: module to get FreeTDS compile-time settings
	* build fixes; now it builds cleanly on FreeBSD, Linux and Windows
	* version 0.7.0

Mon Jul 18 15:21:00 2005  Andrzej Kukula <>

	* mssqldbmodule.c: fix build on Windows: changed MS_WIN32 to MS_WINDOWS
	  reported by Mirek Rusin <>
	* mssqldbmodule.c: many small fixes and cleanups; janitorial fixes;
	  indentation using indent(1L)
	* ChangeLog fix! 'mysql' was mentioned instead of 'mssql'...

Fri Feb 25 02:15:01 2005  Andrzej Kukula <>

	* Fix build on Windows with Visual Studio .NET 2003
	  and MS SQL Server 2000 SP3a
	* mssqldbmodule.c: Fix compile error with Visual Studio .NET 2003
	* mssqldbmodule.c: Add detection/workaround for date issue caused by
	  different dbdatecrack() prototypes
	* README.freetds: describe dbdatecrack()-related issue

Thu Feb 24 02:03:14 2005  Alejandro Dubrovsky  <>

	* Export column type names
	* mssqldbmodule.c:  Return column type information for headers
	* Use type information to make cursor.description conform to API 2

2005-02-17  Alejandro Dubrovsky  <>

	* Apply patch by Rob Nichols to get cursor.description closer to API 2 compliance

2005-02-08  Alejandro Dubrovsky  <>

	* Message changes in mssqldbmodule.c (typos, grammar, etc)

2005-02-07  Alejandro Dubrovsky  <>

	* Added ChangeLog
	* API Change:  add 6th parameter 'port' to connect
	* Don't close connection on cursor close (noted by Alberto Pastore on the sourceforge project page)
	* Make cursor.fetchone comply with DB-SIG return a tuple, not a list of tuples (report and patch by Chris Curvey)