Объект «DatabaseOperations» не имеет атрибута «выбрать» ошибку при интеграции базы данных SQL Azure с django

avatar
Anna
9 августа 2021 в 03:59
198
0
0

Недавно я перешел с использования базы данных Postgres/PostGIS для своего приложения Django на базу данных SQL в Azure. У меня есть столбец геометрии в моей таблице данных. Я могу просто запросить столбец геометрии из Azure Data Studio и использовать необработанные SQL-запросы, на мой взгляд. Однако, когда я пытаюсь вернуть представление с помощью Django ORM, я получаю эту ошибку (более длинная трассировка ниже):

AttributeError at /building/1/
'DatabaseOperations' object has no attribute 'select'
Request Method: GET
Request URL:    http://localhost:8000/building/1/
Django Version: 2.1.15
Exception Type: AttributeError
Exception Value:    
'DatabaseOperations' object has no attribute 'select'

Из того, что я вижу, похоже, что это проблема с настройками/конфигурацией, и в большинстве сообщений говорится о правильной настройке Postgis, однако мне нужно использовать базу данных Azure SQL, а не Postgis.

Вот мои настройки:

DATABASES = {
"default": {
    "ENGINE": "sql_server.pyodbc",
    "NAME": "Buildings",
    "USER": "BuildingsUser",
    "PASSWORD": "*************",
    "HOST": "buildings-test-db.database.windows.net",
    "PORT": "1433",
    "OPTIONS": {
        "driver": 'FreeTDS',
        'host_is_server': True,
        # 'MARS_Connection': 'True',
    },
},

}

Кто-нибудь успешно настроил базу данных Azure с геопространственными столбцами для приложения django и использовал Django ORM? Может быть, мне нужен другой движок для базы данных SQL-сервера с геопространственными столбцами?

Мне бы очень хотелось иметь возможность использовать Django ORM и не записывать все необработанные SQL-запросы.

Я убедился, что мое соединение с базой данных работает - я могу написать необработанный SQL в представлении, и возвращаются правильные строки.

    self.select, self.klass_info, self.annotation_col_map = self.get_select()
  File "/Users/.../env/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 244, in get_select
    sql, params = self.compile(col, select_format=True)
  File "/Users/.../env/lib/python3.7/site-packages/sql_server/pyodbc/compiler.py", line 357, in compile
    return super().compile(node, select_format)
  File "/Users/.../env/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 392, in compile
    return node.output_field.select_format(self, sql, params)
  File "/Users/.../env/lib/python3.7/site-packages/django/contrib/gis/db/models/fields.py", line 271, in select_format
    return compiler.connection.ops.select % sql, params
AttributeError: 'DatabaseOperations' object has no attribute 'select'
Источник

Ответы (0)