Simple SQLite3 Pandas Utilities

Pandas is a great tool for manipulating well-structured data.

SQLite3 is a way to store and retrieve data in a well-structured way.

I wrote some python to encapsulate common tasks in using SQLite3 and Pandas.

Might delete later.

import pandas as pd
import sqlite3

test_db_filename = 'starfleet_missions.sqlite3'

sqlite_conn = sqlite3.connect(test_db_filename)

sqlite_cursor = sqlite_conn.cursor()

# test query
test_sql = """
SELECT  DISTINCT  StarshipName, PlanetName, StarDate
FROM    Missions
        INNER JOIN Planets
            ON Planet.ID = Mission.PlanetID        
LIMIT 10"""
def descr_to_lst(d): 
    """Returns a list of names of columns retrieved from the description attribute of an SQLite3 cursor.  
    A Description is a list of 7-tuples.  Each first position
     holds a column's name.  The other six positions hold 
    a None."""
    return [i[0] for i in d]
def cursor_to_colnames(crsr):
    """Returns names of columns in a cursor object."""
    return descr_to_lst(crsr.description)

def sqlite_cursor_to_pandas_dataframe(crsr):
    """Given an sqlite3 cursor, return a Pandas DataFrame."""
    vs = np.array(crsr.fetchall())
    cls = cursor_colnames(crsr)
    return pd.DataFrame(data=vs, columns=cls)
def sql_to_df(sql, crsr=sqlite_cursor):
    """Execute an SQL statement on an sqlite3 cursor, then return a Pandas DataFrame."""
    return sqlite_cursor_to_pandas_dataframe(crsr)
def sql_statement_to_rslts(sql, crsr=sqlite_cursor):
    return sqlite_cursor_to_pandas_dataframe(crsr)