Adding support for SQL Server

96 views
Skip to first unread message

Martynas Puronas

unread,
Feb 12, 2020, 5:28:51 PM2/12/20
to Django developers (Contributions to Django itself)
Hey, I've been working on adding support for SQL Server to Django, since the package currently being linked recommended in Django's documentation has been abandoned (as well as a few others seem to be either abandoned or do not have the test suite passing), and I have made some significant progress on it (all of admin tests are passing, as well as aggregates, inserts, deletes, updates and a few other modules). I was wondering if you would be open to adding support for SQL Server, provided I could make sure that the entire test suite passes, and documentation is written? Or does this go against Django's technical roadmap and you would rather keep support for SQL Server outside of Django in a separate package?

Thanks!

Adam Johnson

unread,
Feb 12, 2020, 5:44:27 PM2/12/20
to django-d...@googlegroups.com
Microsoft posted in 2015 and there was an update last April about a working backend that claims support for 3.0: https://groups.google.com/d/msg/django-developers/FbBcUCzrSZo/EoFNbR2BDgAJ

Any support in core would need clear evidence of widespread demand. I don't think there's much demand - e.g. that backend has only 38 stars on GitHub.

On Wed, 12 Feb 2020 at 20:33, Martynas Puronas <mart...@puronas.me> wrote:
Hey, I've been working on adding support for SQL Server to Django, since the package currently being linked recommended in Django's documentation has been abandoned (as well as a few others seem to be either abandoned or do not have the test suite passing), and I have made some significant progress on it (all of admin tests are passing, as well as aggregates, inserts, deletes, updates and a few other modules). I was wondering if you would be open to adding support for SQL Server, provided I could make sure that the entire test suite passes, and documentation is written? Or does this go against Django's technical roadmap and you would rather keep support for SQL Server outside of Django in a separate package?

Thanks!

--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/6d98459d-9616-4343-b4fe-3eabd9ef131f%40googlegroups.com.


--
Adam

Dave Clevenger

unread,
Feb 13, 2020, 8:04:19 AM2/13/20
to django-d...@googlegroups.com
I would definitely get behind official support for SQL Server. The company I work for is all about SQL Server and not willing to consider other options. Right now we are using the django-mssql-backend: https://github.com/ESSolutions/django-mssql-backend which works pretty well for our use case, but official SQL Server support would be great. 

Dave

Tim Allen

unread,
Feb 15, 2020, 11:05:57 AM2/15/20
to Django developers (Contributions to Django itself)
I don't think GitHub stars are a fair assessment; the backend that was most widely used for years has over 300: https://github.com/michiya/django-pyodbc-azure

But that doesn't really tell much of the story, because the Django backends for SQL Server have been so fragmented over the years. Since I started with Django in 2015, I've used five different backends for SQL Server support. That is the problem: SQL Server is the only one of the "big four" RDBMS's without support from core Django (https://db-engines.com/en/ranking). If a newcomer using SQL Server tries to find what Django database backend to use, they're going to have a heck of a time trying to figure it out on Google. There are also fairly large companies that use Django for products that can not currently offer support to their corporate clients who require SQL Server, because there isn't a reliable commitment to support it.

On the flip side of the coin, Oracle support is the closest analog we have to SQL Server support, as they are both paid products from very large corporate entities. Oracle is largely supported because the people who need it are committed to making it happen in core. As a guestimate, supporting SQL Server in core Django would require 6-8 weeks of a properly skilled FTE to bring the backend into feature parity with the existing backends, and about 2 weeks of an FTE per Django release cycle. Once a group of people, or a corporate entity, steps up to commit these resources, it is much more likely to happen.

To wildly speculate on Martynas Puronas's question, while there are currently backends in core, there are advantages to having the backend as a separate package under the Django umbrella. This is similar to why pytz is a separate from Python itself. It would allow for separate release cadences in line with the underlying database's release schedule. While it certainly isn't my decision to make, I could see Django moving in this direction for other database backends in the future.

Regards,

Tim
Reply all
Reply to author
Forward
0 new messages