Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Author: Filip Sawicki
- # from sqlalchemy import create_engine
- USER = 'FILIP'
- PASS = 'ADMIN'
- SERVER = 'localhost'
- class Singleton():
- def __new__(cls, *args, **kwds):
- self = "__self__"
- if not hasattr(cls, self):
- instance = object.__new__(cls)
- instance.init(*args, **kwds)
- setattr(cls, self, instance)
- else:
- raise Exception("This is a singleton class.")
- return getattr(cls, self)
- def init(self, *args, **kwds):
- pass
- class DataBase():
- def __init__(self):
- self.connection = None
- self.engine = None
- self.open = False
- def __del__(self):
- if self.open:
- # self.disconnect()
- self.open = False
- del self
- def connect(self, driver):
- self.engine = create_engine(driver)
- # self.connection = self.engine.connect()
- self.open = True
- def disconnect(self):
- # self.connection.close()
- self.open = False
- def execute(self, request):
- print('Executing -> {}'.format(request))
- # return self.connection.execute(request)
- class DataBasePool(Singleton):
- def __init__(self, size):
- self.max_pool_size = size
- self.db_pool = [DataBase() for _ in range(0, self.max_pool_size)]
- def acquire(self):
- return self.db_pool.pop()
- def release(self, db):
- if len(self.db_pool) < self.max_pool_size:
- self.db_pool.append(db)
- else:
- print('Limit Reached')
- def cleanup(self):
- for index, db in enumerate(self.db_pool):
- del db
- self.db_pool[index] = DataBase()
- def create_engine(driver):
- print('Creating connection...')
- # return sqlalchemy.create_engine(driver)
- def main():
- db_pool = DataBasePool(2)
- # db_pool2 = DataBasePool(3)
- db1 = db_pool.acquire()
- db1.connect('mysql://{}:{}@{}/db'.format(USER, PASS, SERVER))
- result = db1.execute('SELECT username FROM user')
- db_pool.release(db1)
- db_pool.cleanup()
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement