def create_table(self, table_info): cur = self.conn.cursor() table_name = table_info["table_name"] columns = [] for column_name, explain in table_info.items(): if column_name == "table_name": continue column = ' '.join([column_name, explain]) columns += [column] sql = 'create table {} ({})'.format(table_name, ', '.join(columns)) logger.debug(sql) cur.execute(sql) logger.info('created {} table.'.format(table_name)) # print(list(table_info.keys())) od = OrderedDict() od['id'] = None od['typename'] = table_name L = list(table_info.keys()) logger.debug('list(table_info.keys()) = {}'.format(L)) L.remove("table_name") od['field_names'] = ' '.join(L) self.insert('__namedtuples__', od) logger.info('2: inserted {} table info ' 'to __namedtuples__ table.'.format(table_name))
def __init__(self, conn): self.conn = conn try: self.create_namedtuples_table() except sqlite3.OperationalError: pass logger.info('GeneralSQL(self=0x{:x}, conn=0x{:x}) done.'. \ format(id(self), id(conn)))
def _get_namedtuple(self, typename): if not hasattr(self.__dict__, typename): cur = self.cur sql = ('select * from __namedtuples__ where ' 'typename = "{}"').format(typename) logger.debug(sql) result = cur.execute(sql) logger.info('got {} __namedtuples__ info.'.format(typename)) row = cur.fetchone() if not row: raise ValueError("typename={} is not in __namedtuples__") field_names = row[2] namedtup = namedtuple(typename, field_names) self.__dict__[typename] = namedtup else: namedtup = self.__dict__[typename] return namedtup
def __init__(self, conn, sql, values=None, max_rows=0): self.sql = sql self.values = values self.cur = conn.cursor() self.max_rows = max_rows self._i = 0 sp = sql.split() table_name_index = sp.index('from') + 1 table_name = sp[table_name_index] namedtup = self._get_namedtuple(table_name) if self.values: result = self.cur.execute('select ' + sql, self.values) else: result = self.cur.execute('select ' + sql) self.namedtup = namedtup logger.info('NamedRow(self={})'.format(self))
def create_namedtuples_table(self): conn = self.conn table_name = '__namedtuples__' sql = ''' create table __namedtuples__ ( id integer primary key, typename uniq text, field_names text )''' logger.debug(sql) conn.execute(sql) conn.commit() logger.info('created __namedtuples__ table.') od = OrderedDict() od['id'] = None od['typename'] = table_name od['field_names'] = '' od['field_names'] = ' '.join(od.keys()) logger.debug('od.keys() = {}'.format(od.keys)) self.insert('__namedtuples__', od) logger.info('1: inserted __namedtuples__ table info ' 'to __namedtuples__ table.')
def close(self): self.commit() self.conn.close() logger.info('close {}.'.format(self))