Download this datafile, which we studied in class 13.
By wrapping the SQL in Python, we can easily construct nested queries. This allows us to construct queries that are as complicated as we like.
import pandas
pandas.set_option('display.max_rows',30)
def sql_request(q):
cur.execute(q)
return pandas.DataFrame(cur.fetchall(),columns=[d[0] for d in cur.description]) # just using Pandas for nice tabular display of results, nothing more
import sqlite3
con = sqlite3.connect('pres2.db')# create database pres2.db (or connect to it)
cur = con.cursor()#generate a 'live' cursor
df = pandas.read_csv("2016_US_County_Level_Presidential_Results.csv")
df.to_sql("pres", con, if_exists='append', index=False)
#sql_request("SELECT * FROM pres")
q1 = 'SELECT state_abbr,SUM(votes_dem)/SUM(total_votes) as frac_dem,SUM(votes_gop)/SUM(total_votes) as frac_gop FROM pres GROUP BY state_abbr'
print(q1+';')
sql_request(q1+';')
q2 = 'SELECT * FROM (' + q1+ ') WHERE frac_dem>frac_gop ORDER BY frac_dem desc'
print(q2+';')
sql_request(q2+';')
q2 = 'SELECT * FROM (' + q1+ ') WHERE frac_dem<=frac_gop ORDER BY frac_gop desc'
print(q2+';')
sql_request(q2+';')