6
6
from .connection import SAConnection
7
7
from .exc import InvalidRequestError , ArgumentError
8
8
from ..utils import _PoolContextManager , _PoolAcquireContextManager
9
- from ..cursors import Cursor
9
+ from ..cursors import (
10
+ Cursor , DeserializationCursor , DictCursor , SSCursor , SSDictCursor )
10
11
11
12
12
13
try :
@@ -26,16 +27,23 @@ def create_engine(minsize=1, maxsize=10, loop=None,
26
27
27
28
Returns Engine instance with embedded connection pool.
28
29
29
- The pool has *minsize* opened connections to PostgreSQL server.
30
+ The pool has *minsize* opened connections to MySQL server.
30
31
"""
32
+ deprecated_cursor_classes = [
33
+ DeserializationCursor , DictCursor , SSCursor , SSDictCursor ,
34
+ ]
35
+
36
+ cursorclass = kwargs .get ('cursorclass' , Cursor )
37
+ if not issubclass (cursorclass , Cursor ) or any (
38
+ issubclass (cursorclass , cursor_class )
39
+ for cursor_class in deprecated_cursor_classes
40
+ ):
41
+ raise ArgumentError ('SQLAlchemy engine does not support '
42
+ 'this cursor class' )
43
+
31
44
coro = _create_engine (minsize = minsize , maxsize = maxsize , loop = loop ,
32
45
dialect = dialect , pool_recycle = pool_recycle ,
33
46
compiled_cache = compiled_cache , ** kwargs )
34
- compatible_cursor_classes = [Cursor ]
35
- # Without provided kwarg, default is default cursor from Connection class
36
- if kwargs .get ('cursorclass' , Cursor ) not in compatible_cursor_classes :
37
- raise ArgumentError ('SQLAlchemy engine does not support '
38
- 'this cursor class' )
39
47
return _EngineContextManager (coro )
40
48
41
49
0 commit comments