1
- import logging
2
-
3
- from .cs50 import _formatException
4
-
5
-
6
- # Configure logger
7
- _logger = logging .getLogger ("cs50" )
8
- _logger .setLevel (logging .DEBUG )
9
-
10
- # Log messages once
11
- _logger .propagate = False
12
-
13
- handler = logging .StreamHandler ()
14
- handler .setLevel (logging .DEBUG )
15
-
16
- formatter = logging .Formatter ("%(levelname)s: %(message)s" )
17
- formatter .formatException = lambda exc_info : _formatException (* exc_info )
18
- handler .setFormatter (formatter )
19
- _logger .addHandler (handler )
20
-
21
-
22
1
class SQL (object ):
23
2
"""Wrap SQLAlchemy to provide a simple SQL API."""
24
3
@@ -33,6 +12,7 @@ def __init__(self, url, **kwargs):
33
12
"""
34
13
35
14
# Lazily import
15
+ import logging
36
16
import os
37
17
import re
38
18
import sqlalchemy
@@ -49,6 +29,8 @@ def __init__(self, url, **kwargs):
49
29
# Create engine, disabling SQLAlchemy's own autocommit mode, raising exception if back end's module not installed
50
30
self ._engine = sqlalchemy .create_engine (url , ** kwargs ).execution_options (autocommit = False )
51
31
32
+ self ._logger = logging .getLogger ("cs50" )
33
+
52
34
# Listener for connections
53
35
def connect (dbapi_connection , connection_record ):
54
36
@@ -70,16 +52,16 @@ def connect(dbapi_connection, connection_record):
70
52
71
53
72
54
# Test database
73
- disabled = _logger .disabled
74
- _logger .disabled = True
55
+ disabled = self . _logger .disabled
56
+ self . _logger .disabled = True
75
57
try :
76
58
self .execute ("SELECT 1" )
77
59
except sqlalchemy .exc .OperationalError as e :
78
60
e = RuntimeError (_parse_exception (e ))
79
61
e .__cause__ = None
80
62
raise e
81
63
finally :
82
- _logger .disabled = disabled
64
+ self . _logger .disabled = disabled
83
65
84
66
def __del__ (self ):
85
67
"""Disconnect from database."""
@@ -360,22 +342,22 @@ def shutdown_session(exception=None):
360
342
361
343
# If constraint violated, return None
362
344
except sqlalchemy .exc .IntegrityError as e :
363
- _logger .debug (termcolor .colored (statement , "yellow" ))
345
+ self . _logger .debug (termcolor .colored (statement , "yellow" ))
364
346
e = ValueError (e .orig )
365
347
e .__cause__ = None
366
348
raise e
367
349
368
350
# If user error
369
351
except (sqlalchemy .exc .OperationalError , sqlalchemy .exc .ProgrammingError ) as e :
370
352
self ._disconnect ()
371
- _logger .debug (termcolor .colored (statement , "red" ))
353
+ self . _logger .debug (termcolor .colored (statement , "red" ))
372
354
e = RuntimeError (e .orig )
373
355
e .__cause__ = None
374
356
raise e
375
357
376
358
# Return value
377
359
else :
378
- _logger .debug (termcolor .colored (_statement , "green" ))
360
+ self . _logger .debug (termcolor .colored (_statement , "green" ))
379
361
return ret
380
362
381
363
def _escape (self , value ):
0 commit comments