Я выполнил поиск слова «диалекты» в репозитории SQLAlchemy github , и основным выделенным модулем был SQLAlchemy.databases.__init__.py
:
from ..dialects.sqlite import base as sqlite
from ..dialects.postgresql import base as postgresql
postgres = postgresql
from ..dialects.mysql import base as mysql
from ..dialects.oracle import base as oracle
from ..dialects.firebird import base as firebird
from ..dialects.mssql import base as mssql
from ..dialects.sybase import base as sybase
__all__ = (
'firebird',
'mssql',
'mysql',
'postgresql',
'sqlite',
'oracle',
'sybase',
)
Который я изменил на:
from ..dialects.mysql import base as mysql
__all__ = (
'mysql',
)
Я также изменил объявление __all__
в sqlalchemy.dialects.__init__.py
. Это:
__all__ = (
'firebird',
'mssql',
'mysql',
'oracle',
'postgresql',
'sqlite',
'sybase',
)
до:
__all__ = (
'mysql'
)
( На самом деле я не знаю, нужно ли изменять эти объявления __all__
. Я не проверял это, не делая этого. )
Затем я удалил все подкаталоги sqlalchemy.dialects.*
, кроме mysql
, и мне удалось запустить несколько приложений MySQL CRUD, которые я сижу без исключения.
Также удаление папки sqlalchemy.testing
не вызвало проблем.
Я попытался запустить приложение sqllite и получил sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:sqlite
.
Таким образом, кажется, что с необходимостью только изменить один или два файла, вы можете сойти с рук, если только будете работать на диалекте, который вы оставите позади.
Главное, что после удаления диалектов все тесты для вашего приложения проходят (при условии, что ваш тестовый охват хороший), поскольку я тестировал только на довольно ограниченном наборе небольших приложений ORM.