django-pyodbc is a Django SQL Server DB backend powered by the pyodbc library. pyodbc is a mature, viable way to access SQL Server from Python in multiple platforms and is actively maintained. It's also used by SQLAlchemy for SQL Server connections.
This is a fork of the original django-pyodbc, hosted on Google Code and last updated in 2011.
- Support for Django 1.4 and up.
- Support for SQL Server 2000, 2005, 2008, and 2012 (please let us know if you have success running this backend with another version of SQL Server)
- Native Unicode support. Every string that goes in is stored as Unicode, and every string that goes out of the database is returned as Unicode. No conversion to/from intermediate encodings takes place, so things like max_length in CharField works just like expected.
- Both Windows Authentication (Integrated Security) and SQL Server Authentication.
- LIMIT+OFFSET and offset w/o LIMIT emulation under SQL Server 2005.
- LIMIT+OFFSET under SQL Server 2000.
- Django's TextField both under SQL Server 2000 and 2005.
- Passes most of the tests of the Django test suite.
- Compatible with SQL Server and SQL Server Native Client from Microsoft (Windows) and FreeTDS ODBC drivers (Linux).
Install django-pyodbc.
pip install django-pyodbc
Now you can now add a database to your settings using standard ODBC parameters.
DATABASES = { 'default': { 'ENGINE': "django_pyodbc", 'HOST': "127.0.0.1,1433", 'USER': "mssql_user", 'PASSWORD': "mssql_password", 'NAME': "database_name", 'OPTIONS': { 'host_is_server': True }, } }
That's it! You're done.
The following settings control the behavior of the backend:
NAME String. Database name. Required.
HOST String. SQL Server instance in server\instance or ip,port format.
USERString. Database user name. If not given then MS Integrated Security- will be used.
PASSWORD String. Database user password.
OPTIONS Dictionary. Current available keys:
driverString. ODBC Driver to use. Default is
"SQL Server"on Windows and"FreeTDS"on other platforms.dsnString. A named DSN can be used instead of
HOST.autocommitBoolean. Indicates if pyodbc should direct the the ODBC driver to activate the autocommit feature. Default value is
False.MARS_ConnectionBoolean. Only relevant when running on Windows and with SQL Server 2005 or later through MS SQL Server Native client driver (i.e. setting
driverto"SQL Server Native Client 11.0"). See http://msdn.microsoft.com/en-us/library/ms131686.aspx. Default value isFalse.host_is_serverBoolean. Only relevant if using the FreeTDS ODBC driver under Unix/Linux.
By default, when using the FreeTDS ODBC driver the value specified in the
HOSTsetting is used in aSERVERNAMEODBC connection string component instead of being used in aSERVERcomponent; this means that this value should be the name of a dataserver definition present in thefreetds.confFreeTDS configuration file instead of a hostname or an IP address.But if this option is present and it's value is True, this special behavior is turned off.
See http://freetds.org/userguide/dsnless.htm for more information.
extra_paramsString. Additional parameters for the ODBC connection. The format is
"param=value;param=value".collationString. Name of the collation to use when performing text field lookups against the database. For Chinese language you can set it to
"Chinese_PRC_CI_AS". The default collation for the database will be used if no value is specified.encodingString. Encoding used to decode data from this database. Default is 'utf-8'.
driver_needs_utf8Boolean. Some drivers (FreeTDS, and other ODBC drivers?) don't support Unicode yet, so SQL clauses' encoding is forced to utf-8 for those cases.
If this option is not present, the value is guessed according to the driver set.
To run the test suite:
python tests/runtests.py --settings=test_django_pyodbcSee LICENSE.
- Adam Vandenber
- Alex Vidal
- Dan Loewenherz
- Filip Wasilewski
- Michael Manfre
- Michiya Takahashi
- Paul Tax
- Ramiro Morales
- Wei guangjing
- mamcx
From the original project README.
- All the Django core developers, especially Malcolm Tredinnick. For being an example of technical excellence and for building such an impressive community.
- The Oracle Django team (Matt Boersma, Ian Kelly) for some excellent ideas when it comes to implement a custom Django DB backend.