Source code for nightingale.loader

import logging
import sqlite3

logger = logging.getLogger(__name__)


[docs] class DataLoader: """Load data from a database using a SQL query.""" def __init__(self, config, connection=None): self.config = config self._connection = connection
[docs] def load(self, selector): cursor = self.get_cursor() cursor.execute(selector) return (dict(row) for row in cursor)
[docs] def get_cursor(self): conn = self.get_connection() return conn.cursor()
[docs] def get_connection(self): # SQLite-specific if self._connection: return self._connection conn = sqlite3.connect(self.config.connection) conn.row_factory = sqlite3.Row self._connection = conn logger.info("Connected to %s", self.config.connection) return conn
[docs] def close(self): if self._connection: self._connection.close() self._connection = None