Skip to content

Unable to use with another backend #92

@mihalikv

Description

@mihalikv

Problem is that if you want to use multiple backends in the same Django app for example Mssql together with oracle DB, code like this
https://github.com/microsoft/mssql-django/blob/master/mssql/functions.py#L274
totally override functionality and it is impossible to use Oracle connector.

Trace:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 82, in _execute
    return self.cursor.execute(sql)
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/oracle/base.py", line 534, in execute
    return self.cursor.execute(query, self._param_generator(params))
cx_Oracle.DatabaseError: ORA-00900: invalid SQL statement
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "/srv/django_project/project/search/management/commands/es_feed_index.py", line 101, in handle
    self.feed_elasticsearch(tenant, site, document_classes=options['document_classes'])
  File "/srv/django_project/project/search/management/commands/es_feed_index.py", line 80, in feed_elasticsearch
    task_add_state=task_state)
  File "/srv/django_project/project/search/mappings/default.py", line 410, in sync
    dict_data = cls.get_all_index_data(index_name, object_ids, additional_data, tenant_id, queryset_filter)
  File "/srv/django_project/project/search/mappings/kondela.py", line 72, in get_all_index_data
    join_values=cls.get_join_values(tenant_id),
  File "/srv/django_project/project/es_importer/utils.py", line 196, in get_model_values
    join_values, tenant_id)
  File "/srv/django_project/project/es_importer/utils.py", line 83, in combine_results
    for joined_item in joined_items:
  File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 287, in __iter__
    self._fetch_all()
  File "/usr/local/lib/python3.7/site-packages/cacheops/query.py", line 271, in _fetch_all
    return self._no_monkey._fetch_all(self)
  File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 1308, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 111, in __iter__
    for row in compiler.results_iter(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size):
  File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1108, in results_iter
    results = self.execute_sql(MULTI, chunked_fetch=chunked_fetch, chunk_size=chunk_size)
  File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1143, in execute_sql
    sql, params = self.as_sql()
  File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 513, in as_sql
    where, w_params = self.compile(self.where) if self.where is not None else ("", [])
  File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 430, in compile
    sql, params = node.as_sql(self, self.connection)
  File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/where.py", line 81, in as_sql
    sql, params = compiler.compile(child)
  File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 428, in compile
    sql, params = vendor_impl(self, self.connection)
  File "/usr/local/lib/python3.7/site-packages/django/db/models/lookups.py", line 132, in as_oracle
    return lookup.as_sql(compiler, connection)
  File "/usr/local/lib/python3.7/site-packages/django/db/models/lookups.py", line 396, in as_sql
    return self.split_parameter_list_as_sql(compiler, connection)
  File "/usr/local/lib/python3.7/site-packages/mssql/functions.py", line 100, in split_parameter_list_as_sql
    cursor.execute("IF OBJECT_ID('tempdb.dbo.#Temp_params', 'U') IS NOT NULL DROP TABLE #Temp_params; ")
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 98, in execute
    return super().execute(sql, params)
  File "/usr/local/lib/python3.7/site-packages/raven/contrib/django/client.py", line 127, in execute
    return real_execute(self, sql, params)
  File "/usr/local/lib/python3.7/site-packages/cacheops/transaction.py", line 97, in execute
    result = self._no_monkey.execute(self, sql, params)
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.7/site-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 82, in _execute
    return self.cursor.execute(sql)
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/oracle/base.py", line 534, in execute
    return self.cursor.execute(query, self._param_generator(params))
django.db.utils.DatabaseError: ORA-00900: invalid SQL statement

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions