Skip to content

Commit 983f166

Browse files
committed
using with clause
1 parent c1f2485 commit 983f166

File tree

1 file changed

+23
-52
lines changed

1 file changed

+23
-52
lines changed

app.py

Lines changed: 23 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -25,61 +25,32 @@
2525
parser = reqparse.RequestParser()
2626
parser.add_argument('customer')
2727

28-
# Implement manual connection pooling
29-
class ConnectionManager(object):
30-
__instance = None
31-
__conn_index = 0
32-
__conn_dict = {}
33-
__lock = Lock()
34-
35-
def __new__(cls):
36-
if ConnectionManager.__instance is None:
37-
ConnectionManager.__instance = object.__new__(cls)
38-
return ConnectionManager.__instance
39-
40-
def getConnection(self):
41-
self.__lock.acquire()
42-
self.__conn_index += 1
43-
44-
if self.__conn_index > 9:
45-
self.__conn_index = 0
46-
47-
if not self.__conn_index in self.__conn_dict.keys():
48-
application_name = ";APP={0}-{1}".format(socket.gethostname(), self.__conn_index)
49-
conn = pyodbc.connect(os.environ['SQLAZURECONNSTR_WWIF'] + application_name)
50-
self.__conn_dict.update( { self.__conn_index: conn } )
51-
52-
result = self.__conn_dict[self.__conn_index]
53-
self.__lock.release()
54-
55-
return result
56-
5728
class Queryable(Resource):
5829
def executeQueryJson(self, verb, payload=None):
5930
result = {}
60-
conn = ConnectionManager().getConnection()
61-
cursor = conn.cursor()
62-
entity = type(self).__name__.lower()
63-
procedure = f"web.{verb}_{entity}"
64-
try:
65-
if payload:
66-
cursor.execute(f"EXEC {procedure} ?", json.dumps(payload))
67-
else:
68-
cursor.execute(f"EXEC {procedure}")
69-
70-
result = cursor.fetchone()
71-
72-
if result:
73-
result = json.loads(result[0])
74-
else:
75-
result = {}
76-
77-
cursor.commit()
78-
except:
79-
print("Unexpected error:", sys.exc_info()[0])
80-
raise
81-
finally:
82-
cursor.close()
31+
with pyodbc.connect(os.environ['SQLAZURECONNSTR_WWIF']) as conn:
32+
cursor = conn.cursor()
33+
entity = type(self).__name__.lower()
34+
procedure = f"web.{verb}_{entity}"
35+
try:
36+
if payload:
37+
cursor.execute(f"EXEC {procedure} ?", json.dumps(payload))
38+
else:
39+
cursor.execute(f"EXEC {procedure}")
40+
41+
result = cursor.fetchone()
42+
43+
if result:
44+
result = json.loads(result[0])
45+
else:
46+
result = {}
47+
48+
cursor.commit()
49+
except:
50+
conn.close()
51+
raise
52+
finally:
53+
cursor.close()
8354

8455
return result
8556

0 commit comments

Comments
 (0)