Metadata-Version: 2.0
Name: pymssql
Version: 2.1.0
Summary: DB-API interface to Microsoft SQL Server for Python. (new Cython-based version)
Home-page: http://pymssql.org
Author: pymssql Google Group
Author-email: pymssql@googlegroups.com
License: LGPL
Keywords: mssql,SQL Server,database,DB-API
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Database
Classifier: Topic :: Database :: Database Engines/Servers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix

pymssql - DB-API interface to Microsoft SQL Server
==================================================

.. image:: https://travis-ci.org/pymssql/pymssql.png?branch=master
        :target: https://travis-ci.org/pymssql/pymssql

.. image:: https://pypip.in/d/pymssql/badge.png
        :target: https://crate.io/packages/pymssql

.. image:: https://pypip.in/v/pymssql/badge.png
        :target: https://crate.io/packages/pymssql

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

.. _Microsoft SQL Server: http://www.microsoft.com/sqlserver/
.. _Python: http://www.python.org/
.. _PEP-249: http://www.python.org/dev/peps/pep-0249/
.. _FreeTDS: http://www.freetds.org/

Detailed information on pymssql is available on the website:

http://pymssql.org

New development is happening on GitHub at:

https://github.com/pymssql/pymssql

There is a Google Group for discussion at:

https://groups.google.com/forum/?fromgroups#!forum/pymssql


Do you use pymssql?
-------------------

Can you take a minute and fill out this survey to help us prioritize development tasks?

https://www.surveymonkey.com/s/KMQ8BM5


.. image:: https://d2weczhvl823v0.cloudfront.net/pymssql/pymssql/trend.png
   :alt: Bitdeli badge
   :target: https://bitdeli.com/free



Recent Changes
==============

Version 2.1.0 - 2014-02-25 - `Marc Abramowitz <http://marc-abramowitz.com/>`_
=============================================================================

Features
--------

- Sphinx-based documentation (GH-149)

  Read it online at http://pymssql.org/

  Thanks, Ramiro Morales!

  See:

  * https://github.com/pymssql/pymssql/pull/149
  * https://github.com/pymssql/pymssql/pull/162
  * https://github.com/pymssql/pymssql/pull/164
  * https://github.com/pymssql/pymssql/pull/165
  * https://github.com/pymssql/pymssql/pull/166
  * https://github.com/pymssql/pymssql/pull/167
  * https://github.com/pymssql/pymssql/pull/169
  * https://github.com/pymssql/pymssql/pull/174
  * https://github.com/pymssql/pymssql/pull/175

- "Green" support (GH-135)

  Lets you use pymssql with cooperative multi-tasking systems like
  gevent and have pymssql call a callback when it is waiting for a
  response from the server. You can set this callback to yield to
  another greenlet, coroutine, etc. For example, for gevent, you could
  do:

  .. code-block:: python

      def wait_callback(read_fileno):
          gevent.socket.wait_read(read_fileno)

      pymssql.set_wait_callback(wait_callback)

  The above is useful if you\'re say, running a gunicorn server with the
  gevent worker. With this callback in place, when you send a query to
  SQL server and are waiting for a response, you can yield to other
  greenlets and process other requests. This is super useful when you
  have high concurrency and/or slow database queries and lets you use
  less gunicorn worker processes and still handle high concurrency.

  See https://github.com/pymssql/pymssql/pull/135

- Better error messages.

  E.g.: For a connection failure, instead of::

      pymssql.OperationalError: (20009, 'Net-Lib error during Connection
      refused')

  the dberrstr is also included, resulting in::

      pymssql.OperationalError: (20009, 'DB-Lib error message 20009,
      severity 9:\nUnable to connect: Adaptive Server is unavailable or
      does not exist\nNet-Lib error during Connection refused\n')

  See:

  * https://github.com/pymssql/pymssql/pull/151

  In the area of error messages, we also made this change:

  - ``execute``: Raise ``ColumnsWithoutNamesError`` when ``as_dict=True`` and missing
    column names (GH-160)

  because the previous behavior was very confusing; instead of raising
  an exception, we would just return row dicts with those columns
  missing. This prompted at least one question on the mailing list
  (https://groups.google.com/forum/?fromgroups#!topic/pymssql/JoZpmNZFtxM),
  so we thought it was better to handle this explicitly by raising an
  exception, so the user would understand what went wrong.

  See:

  * https://github.com/pymssql/pymssql/pull/160
  * https://github.com/pymssql/pymssql/pull/168

- Performance improvements

  You are most likely to notice a difference from these when you are
  fetching a large number of rows.

  * Reworked row fetching (GH-159)

    There was a rather large amount of type conversion occuring when
    fetching a row from pymssql. The number of conversions required have
    been cut down significantly with these changes. Thanks Damien, Churchill!

    See:

    * https://github.com/pymssql/pymssql/pull/158
    * https://github.com/pymssql/pymssql/pull/159

  * Modify ``get_row()`` to use the CPython tuple API (GH-178)

    This drops the previous method of building up a row tuple and switches
    to using the CPython API, which allows you to create a correctly sized
    tuple at the beginning and simply fill it in. This appears to offer
    around a 10% boost when fetching rows from a table where the data is
    already in memory. Thanks Damien, Churchill!

    See:

    * https://github.com/pymssql/pymssql/pull/178

- MSSQLConnection: Add ``with`` (context manager) support (GH-171)

  This adds ``with`` statement support for ``MSSQLConnection`` in the ``_mssql``
  module -- e.g.:

  .. code-block:: python

      with mssqlconn() as conn:
          conn.execute_query("SELECT @@version AS version")

  We already have ``with`` statement support for the ``pymssql`` module.

  See:

  * https://github.com/pymssql/pymssql/pull/171

- Allow passing in binary data (GH-179)

  Use the ``bytearray`` type added in Python 2.6 to signify that this is
  binary data and to quote it accordingly. Also modify the handling of
  str/bytes types checking the first 2 characters for b'0x' and insert
  that as binary data.

  See:

  * https://github.com/pymssql/pymssql/pull/179

- Add support for binding ``uuid.UUID`` instances to stored procedures input
  params (GH-143)

  Thanks, Ramiro Morales!

  See:

  * https://github.com/pymssql/pymssql/pull/143
  * https://github.com/pymssql/pymssql/commit/1689c83878304f735eb38b1c63c31e210b028ea7

- The version number is now stored in one place, in ``pymssql_version.h``
  This makes it easier to update the version number and not forget any
  places, like I did with pymssql 2.0.1

  See:

  * https://github.com/pymssql/pymssql/commit/fd317df65fa62691c2af377e4661defb721b2699

- Improved support for using py.test as test runner (GH-183)

  See:

  * https://github.com/pymssql/pymssql/pull/183

- Improved PEP-8 and pylint compliance

Bug Fixes
---------

- GH-142 ("Change how \*.pyx files are included in package") - this
  should prevent ``pymssql.pyx`` and ``_mssql.pyx`` from getting copied into the
  root of your virtualenv. Thanks, @Arfrever!

  See:

  * https://github.com/pymssql/pymssql/issues/142

- GH-145 ("Prevent error string growing with repeated failed connection
  attempts.")

  See:

  * https://github.com/pymssql/pymssql/issues/145
  * https://github.com/pymssql/pymssql/pull/146

- GH-151 ("err_handler: Don't clobber dberrstr with oserrstr")

   See:

  * https://github.com/pymssql/pymssql/pull/151

- GH-152 ("_mssql.pyx: Zero init global last_msg_* vars")

  See:

  * https://github.com/pymssql/pymssql/pull/152

- GH-177 ("binary columns sometimes are processed as varchar")
  Better mechanism for pymssql to detect that user is passing binary
  data.

  See:

  * https://github.com/pymssql/pymssql/issues/177

- buffer overflow fix (GH-182)

  See:

  * https://github.com/pymssql/pymssql/pull/181
  * https://github.com/pymssql/pymssql/pull/182

- Return ``uniqueidentifer`` columns as ``uuid.UUID`` objects on Python 3

Version 2.0.1 - 2013-10-27 - `Marc Abramowitz <http://marc-abramowitz.com/>`_
-----------------------------------------------------------------------------
* MANIFEST.in: 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 <http://marc-abramowitz.com/>`_
-----------------------------------------------------------------------------
* 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`_

See `ChangeLog`_ for older history...

.. _PyPI: https://pypi.python.org/pypi/pymssql/2.0.0
.. _Travis CI: https://travis-ci.org/pymssql/pymssql
.. _Cython: http://cython.org/
.. _ChangeLog: https://github.com/pymssql/pymssql/blob/master/ChangeLog


