Skip to content

Commit ccc786e

Browse files
committed
Fix find_spec for submodules like mysql.connector
1 parent 41eb615 commit ccc786e

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

sqlit/db/adapters/base.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,16 @@ def import_driver_module(
8888
return importlib.import_module(module_name)
8989

9090
# Skip find_spec if module is already in sys.modules (allows test mocking)
91-
if module_name not in sys.modules and importlib.util.find_spec(module_name) is None:
92-
from ...db.exceptions import MissingDriverError
93-
94-
raise MissingDriverError(driver_name, extra_name, package_name, module_name=module_name)
91+
# find_spec can raise ModuleNotFoundError for submodules like 'mysql.connector'
92+
if module_name not in sys.modules:
93+
try:
94+
spec = importlib.util.find_spec(module_name)
95+
except ModuleNotFoundError:
96+
spec = None
97+
if spec is None:
98+
from ...db.exceptions import MissingDriverError
99+
100+
raise MissingDriverError(driver_name, extra_name, package_name, module_name=module_name)
95101

96102
try:
97103
return importlib.import_module(module_name)

0 commit comments

Comments
 (0)