Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from functools import wraps
- def customizable_args(new_kwargs):
- def wrapper(function):
- @wraps(function)
- def wrapped_function(self, **kwargs):
- kw_arguments = dict()
- kw_arguments.update(new_kwargs)
- kw_arguments.update(kwargs)
- function(self, **kw_arguments)
- return wrapped_function
- return wrapper
- class InsertQuery:
- def __init__(self, table: str, fields: list):
- self.__table = table
- self.__fields = str()
- self.__values_pattern = str()
- arguments = str()
- for field in fields:
- if self.__fields:
- self.__fields += ', '
- arguments += ', '
- self.__fields += field
- arguments += (field + ' = None')
- if self.__values_pattern:
- self.__values_pattern += ', '
- self.__values_pattern += '%s'
- self.__insert_list = list()
- new_args = dict(zip(fields, [None for field in fields]))
- self.__make_add_record_function(new_args, fields)
- def query(self) -> str:
- return 'INSERT INTO {} ({}) VALUES ({})'.format(self.__table, self.__fields, self.__values_pattern)
- def __make_add_record_function(self, arguments, col_list):
- @customizable_args(arguments)
- def add_record(self, **kwargs):
- for col in col_list:
- self.__insert_list.append(kwargs[col])
- setattr(self.__class__, add_record.__name__, add_record)
- def insert(self):
- return self.__insert_list
- statement1 = InsertQuery('cert_info', ['issuer', 'subject', 'started', 'expires'])
- statement2 = InsertQuery('cert_info', ['issuer', 'subject', 'started', 'expires'])
- statement1.add_record(issuer='hiu', subject='weweqe', expires='zavtra')
- statement2.add_record(issuer='lio', subject='iopiop', )
- print(statement1.insert())
- print(statement2.insert())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement