-
Notifications
You must be signed in to change notification settings - Fork 0
/
db_decorator.py
39 lines (35 loc) · 1007 Bytes
/
db_decorator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""
Simple parameterized decorator example
"""
import unittest
from functools import wraps
import mysql.connector
def mysql_decorator(conn_settings):
def with_connection(func):
@wraps(func)
def _exec(*args, **kwargs):
conn = mysql.connector.connect(**conn_settings)
try:
return func(conn, *args, **kwargs)
except mysql.connector.Error as mee:
print "mysql error: '%s', errno: '%s'", mee.msg, mee.errno
finally:
conn.close()
return _exec
return with_connection
@mysql_decorator({'host':'localhost', 'user':'tst', 'password':'123321', 'database':'tst'})
def one(conn):
"""
SELECT 1
"""
cursor = conn.cursor()
cursor.execute("SELECT 1")
row = cursor.fetchone()
cursor.close()
print row
return row
class TestDecorator(unittest.TestCase):
def test(self):
self.assertEqual(one(), (1,))
if __name__ == '__main__':
unittest.main()