Django 2.0+ и вопрос интерфейса SQL Server

Почему необходимо установить Pyodbc и django-pyodbc-azure для взаимодействия с последними версиями SQL Server с Django? Почему django не может использовать Pyodbc из коробки? У меня не получается заставить Sql Server нормально играть с python 3.4.5, Django 2.1, pyodbc 4.0+ и Django-Pyodbc-azure 2.0.8. Я продолжаю получать ошибку сегментации, возникающую при попытке запроса определенных моделей, которые я отражал с помощью inspectdb.

Используемая мной версия linux - openSUSE 42.1. Используемая мной версия Sql Server - 2014.

1 ответ

django-pyodbc-azure это движок Django, который переводит методы Django ORM в необработанный SQL (среди других функций) pyodbc позволяет Python выполнять необработанные SQL-запросы к базе данных через unixODBC с драйвером, специфичным для базы данных. То же самое верно для всех бэкэндов БД; у них есть и движок Django, и пакет Python, которые работают вместе. Например, в PostgreSQL он использует включенный Django postgresql двигатель, который работает с psycopg2 Пакет Python.

Далее вниз по стеку для SQL Server, pyodbc общается через unixODBC и либо freetds или msodbc Драйвер Microsoft. Есть несколько слоев перевода.

Стек, от вашего веб-сервера до сервера базы данных для SQL Server:

  • django-pyodbc-azure: переводит методы Django ORM в необработанный SQL.
  • pyodbc: мост к unixODBC из Python
  • unixODBC библиотека для связи ODBC на *nix.
  • freetds или же msodbc: драйверный мост от unixODBC к SQL Server.
Другие вопросы по тегам