diff --git a/django/db/backends/base/introspection.py b/django/db/backends/base/introspection.py index 29807dfe98..d661e1fc0d 100644 --- a/django/db/backends/base/introspection.py +++ b/django/db/backends/base/introspection.py @@ -54,6 +54,16 @@ class BaseDatabaseIntrospection: """ raise NotImplementedError('subclasses of BaseDatabaseIntrospection may require a get_table_list() method') + def get_table_description(self, cursor, table_name): + """ + Return a description of the table with the DB-API cursor.description + interface. + """ + raise NotImplementedError( + 'subclasses of BaseDatabaseIntrospection may require a ' + 'get_table_description() method.' + ) + def get_migratable_models(self): from django.apps import apps from django.db import router diff --git a/tests/backends/base/test_introspection.py b/tests/backends/base/test_introspection.py index 2b8fbedd8e..5ad9c4f5e0 100644 --- a/tests/backends/base/test_introspection.py +++ b/tests/backends/base/test_introspection.py @@ -16,6 +16,11 @@ class SimpleDatabaseIntrospectionTests(SimpleTestCase): with self.assertRaisesMessage(NotImplementedError, msg): self.introspection.get_table_list(None) + def test_get_table_description(self): + msg = self.may_require_msg % 'get_table_description' + with self.assertRaisesMessage(NotImplementedError, msg): + self.introspection.get_table_description(None, None) + def test_get_sequences(self): msg = self.may_require_msg % 'get_sequences' with self.assertRaisesMessage(NotImplementedError, msg):