У нас есть библиотека базы данных в C #, которую мы можем использовать так:
DatabaseConnection conn = DatabaseConnection.FromConnectionString("...");
Эта библиотека скрывает многие различия между различными механизмами баз данных, такими как имена функций SQL, имена параметров и спецификации и т. Д.
Внутренне класс DatabaseConnection
является абстрактным классом, реализующим некоторые базовые методы, но метод FromConnectionString
проходит через список зарегистрированных специализированных типов, который обрабатывает фактические различия, и создает объект нужного класса. Другими словами, я не получаю объект DatabaseConnection, я получаю взамен объект MSSQLDatabaseConnection или OracleDatabaseConnection, который, конечно, наследуется от DatabaseConnection.
Строка подключения содержит информацию о том, какой тип ядра базы данных и версия этого подключения.
Я бы хотел создать подобную библиотеку в Python. Правильный ли подход к созданию чего-то, что может быть сконструировано таким образом?
conn = DatabaseConnection("...")
или используя метод класса?
conn = DatabaseConnection.FromConnectionString("...")
это первое возможное, то есть ... создание такого объекта и получение чего-то другого, специализированного объекта, в зависимости от данных в переданной строке?
Хорошо, позвольте мне задать другой вопрос ... Что такое pythonic способ сделать это?
Я в основном хочу иметь базовый класс DatabaseConnection также на Python, реализующий общие методы и специализирующийся на производных классах, и где-нибудь иметь метод или функцию, основанную на строках строки соединения и возвращающую правильный тип объекта.