1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- from django.apps import AppConfig
- from django.db import connections
- class BaseAppConfig(AppConfig):
- name = "apps.query_performing_app"
- database = "default"
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.query_results = []
- def ready(self):
- self.query_results = []
- self._perform_query()
- def _perform_query(self):
- raise NotImplementedError
- class ModelQueryAppConfig(BaseAppConfig):
- def _perform_query(self):
- from ..models import TotallyNormal
- queryset = TotallyNormal.objects.using(self.database)
- queryset.update_or_create(name="new name")
- self.query_results = list(queryset.values_list("name"))
- class QueryDefaultDatabaseModelAppConfig(ModelQueryAppConfig):
- database = "default"
- class QueryOtherDatabaseModelAppConfig(ModelQueryAppConfig):
- database = "other"
- class CursorQueryAppConfig(BaseAppConfig):
- def _perform_query(self):
- connection = connections[self.database]
- with connection.cursor() as cursor:
- cursor.execute("SELECT 42" + connection.features.bare_select_suffix)
- self.query_results = cursor.fetchall()
- class QueryDefaultDatabaseCursorAppConfig(CursorQueryAppConfig):
- database = "default"
- class QueryOtherDatabaseCursorAppConfig(CursorQueryAppConfig):
- database = "other"
- class CursorQueryManyAppConfig(BaseAppConfig):
- def _perform_query(self):
- from ..models import TotallyNormal
- connection = connections[self.database]
- table_meta = TotallyNormal._meta
- with connection.cursor() as cursor:
- cursor.executemany(
- "INSERT INTO %s (%s) VALUES(%%s)"
- % (
- connection.introspection.identifier_converter(table_meta.db_table),
- connection.ops.quote_name(table_meta.get_field("name").column),
- ),
- [("test name 1",), ("test name 2",)],
- )
- self.query_results = []
- class QueryDefaultDatabaseCursorManyAppConfig(CursorQueryManyAppConfig):
- database = "default"
- class QueryOtherDatabaseCursorManyAppConfig(CursorQueryManyAppConfig):
- database = "other"
- class StoredProcedureQueryAppConfig(BaseAppConfig):
- def _perform_query(self):
- with connections[self.database].cursor() as cursor:
- cursor.callproc("test_procedure")
- self.query_results = []
- class QueryDefaultDatabaseStoredProcedureAppConfig(StoredProcedureQueryAppConfig):
- database = "default"
- class QueryOtherDatabaseStoredProcedureAppConfig(StoredProcedureQueryAppConfig):
- database = "other"
|