Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions module1-introduction-to-sql/buddymove_holidayiq.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import pandas as pd
import sqlite3


conn = sqlite3.connect('TestDB1.db')
c = conn.cursor()

data = 'buddymove_holidayiq.csv'
df = pd.read_csv(data)

print(df.shape)

df.to_sql('buddymove_holidayiq', con=conn)

# How many rows
# 249
query = 'SELECT COUNT(*) FROM buddymove_holidayiq'
c.execute(query)
results = c.fetchall()
print(results)

# Nature > 100 And Shopping > 100
# 78
query2 = 'SELECT COUNT(*) FROM buddy.move_holidayiq WHERE Nature > 100 AND Shopping > 100'
c.execute(query2)
results2 = c.fetchall()
print(results2)
121 changes: 121 additions & 0 deletions module1-introduction-to-sql/rpg_queries.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
import sqlite3


conn = sqlite3.connect('rpg_db.sqlite3')
curs = conn.cursor()


# How many total characters are there?
# 302
query = 'SELECT COUNT(*) FROM charactercreator_character'
curs.execute(query)
results = curs.fetchall()
print(results)

# How many of each specific subclass?
# Cleric = 75
# Fighter = 68
# Mage = 108
# Thief = 51
# Necromancer = 11
# The 11 Necromancers also fall under Mage
query2_c = 'SELECT COUNT(*) FROM charactercreator_cleric'
query2_f = 'SELECT COUNT(*) FROM charactercreator_fighter'
query2_m = 'SELECT COUNT(*) FROM charactercreator_mage'
query2_t = 'SELECT COUNT(*) FROM charctercreator_thief'
query2_n = 'SELECT COUNT(*) FROM charctercreator_necromancer'

# Cleric
curs.execute(query2_c)
results2_c = curs.fetchall()
print(results2_c)

# Fighter
curs.execute(query2_f)
results2_f = curs.fetchall()
print(results2_f)

# Mage
curs.execute(query2_m)
results2_m = curs.fetchall()
print(results2_m)

# Thief
curs.execute(query2_t)
results2_t = curs.fetchall()
print(results2_t)

# Necromancer
curs.execute(query2_n)
results2_n = curs.fetchall()
print(results2_n)

# How many total Items?
# 174
query3 = 'SELECT COUNT(*) FROM armory_item'
curs.execute(query3)
results3 = curs.fetchall()
print(results3)

# How many of the items are weapons?
# 37
query4 = 'SELECT COUNT(*) FROM armory_weapon'
curs.execute(query4)
results4 = curs.fetchall()
print(results4)
# How many are not
# 137
print(174-37)

# How many items does each character have (First 20 Rows)
# Still needs work
query5 = """
'SELECT COUNT(item_id)
FROM charactercreator_character_inventory AS cci
GROUP BY cci.character_id
LIMIT 20'
"""
curs.execute(query5)
results5 = curs.fetchall()
print(results5)

# How many weapons does each character have (First 20 Rows)
query6 = """
'SELECT COUNT(item_ptr_id)
FROM charactercreator_character_inventory AS cci
INNER JOIN armory_weapon
ON item_id = item_ptr_id
GROUP BY cci.character_id
LIMIT 20'
"""
curs.execute(query6)
results6 = curs.fetchall()
print(results6)

# Avg number of items each character has

query7 = """
'SELECT AVG(item_id) FROM
(SELECT COUNT(item_id)
FROM charactercreator_character inventory AS cci
GROUP BY cci.character_id)'
"""
curs.execute(query7)
results7 = curs.fetchall()
print(results7)

# print(sum(count) / len(count))

# Avg number of weapons each character has

query8 = """
'SELECT AVG(item_ptr_id) FROM
(SELECT COUNT(item_ptr_id)
FROM charactercreator_character_inventory AS cci
INNER JOIN armory_weapon
ON item_id = item_ptr_id
GROUP BY cci.character_id)
"""
curs.execute(query8)
results8 = curs.fetchall()
print(results8)
91 changes: 91 additions & 0 deletions module2-sql-for-analysis/insert_titanic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# pipenv shell
# pipenv install psycopg2-binary
# pipenv install pandas if not installed
pip install psycopg2-binary


import psycopg2
import sqlite3
import pandas as pd

# Connection
conn = sqlite3.connect('titanic.db')
c = conn.cursor()

# Read csv to df
data = 'titanic.csv'
df = pd.read_csv(data)

print(df.shape)

# Delete existing tables to make code rerunnable
delete = 'DROP TABLE IF EXISTS titanic'
c.execute(delete)

# Convert df to sql
df.to_sql('titanic', con=conn)

# connect to sql
sl_conn = sqlite3.connect('titanic.db')
sl_curs = sl_conn.cursor()

get_passenger = 'SELECT * FROM titanic'
sl_curs.execute(get_passenger)
passengers = sl_curs.fetchall()

# Auth/Host info to connect
dbname = 'yfnzcrhk'
user = 'yfnzcrhk'
password = 'C9HzIuc_T0xZEBHH9S89mMfJMLGR_caH'
host = 'isilo.db.elephantsql.com'

pg_conn = psycopg2.connect(dbname=dbname, user=user,
password=password, host=host)

pg_curs = pg_conn.cursor()

create_table_statement = """
CREATE TABLE titanic_table (
id SERIAL PRIMARY KEY,
survived INT,
pclass INT,
name varchar(40) NOT NULL,
sex STR,
age INT,
siblings/spouses aboard INT,
parents/children aboard INT,
fare INT,
data JSONB
);
"""

pg_curs.execute(create_table_statement)
pg_conn.commit()


insert = """
INSERT INTO titanic
(survived, pclass, name, sex, age, siblings/spouses aboard,
parents/children aboard, fare)
VALUES"""


for passenger in passengers:
insert = """
INSERT INTO titanic
(survived, pclass, name, sex, age, siblings/spouses aboard,
parents/children aboard, fare)
VALUES"""+ str(passengers[1:]) + ";"
pg_curs.execute(insert)

pg_conn.commit()

# Check
pg_curs.execute('SELECT * FROM titanic LIMIT 5')
pg_curs.fetchall()

# Close Out
pg_curs.close()
pg_conn.close()
sl_curs.close()
sl_conn.close()
118 changes: 118 additions & 0 deletions module2-sql-for-analysis/recreate_rpg_postgresql.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# pipenv shell
# pipenv install psycopg2-binary
!pip install psycopg2-binary

import psycopg2
import sqlite3


sl_conn = sqlite3.connect('rpg_db.sqlite3')
sl_curs = sl_conn.cursor()

# List of Tuples
get_characters = "SELECT * FROM charactercreator_character;"
sl_curs.execute(get_characters)
characters = sl_curs.fetchall()
print(len(characters))
characters[:5]

# Transform
sl_curs.execute('PRAGMA table_info(charactercreator_character);')
sl_curs.fetchall()

# Create Statement
create_character_table = """
CREATE TABLE charactercreator_character (
character_id SERIAL PRIMARY KEY,
name VARCHAR(30),
level INT,
exp INT,
hp INT,
strength INT,
intelligence INT,
dexterity INT,
wisdom INT
);
"""
dbname = 'aozsohiy'
user = 'aozsohiy'
password = '1q4lTsuwMLB-JndNWIMzj7jjHwmd-6Ze'
host = 'isilo.db.elephantsql.com'

# Defining a function to refresh connection and cursor
def refresh_connection_and_cursor(conn, curs):
curs.close()
conn.close()
pg_conn = psycopg2.connect(dbname=dbname, user=user,
password=password, host=host)
pg_curs = pg_conn.cursor()
return pg_conn, pg_curs

pg_conn, pg_curs = refresh_connection_and_cursor(pg_conn, pg_curs)

### IF FUNCTION DOESN'T WORK
# pg_conn = psycopg2.connect(dbname=dbname, user=user,
# password=password, host=host)
# pg_curs = pg_conn.cursor()

# Execute the create table
pg_curs.execute(create_character_table)
pg_conn.commit()

# PostgreSQL comparison to the SQLite pragma
# We can query tables if we want to check
# This is a clever optional thing, showing postgresql internals
show_tables = """
SELECT
*
FROM
pg_catalog.pg_tables
WHERE
schemaname != 'pg_catalog'
AND schemaname != 'information_schema';
"""
pg_curs.execute(show_tables)
pg_curs.fetchall()

# Load
characters[0]


characters[0][1:]

example_insert = """
INSERT INTO charactercreator_character
(name, level, exp, hp, strength, intelligence, dexterity, wisdom)
VALUES """ + str(characters[0][1:]) + ";"

print(example_insert)

# Insert Loop
for character in characters:
insert_character = """
INSERT INTO charactercreator_character
(name, level, exp, hp, strength, intelligence, dexterity, wisdom)
VALUES """ + str(character[1:]) + ";"
pg_curs.execute(insert_character)



pg_conn.commit()

# Check
pg_curs.execute('SELECT * FROM charactercreator_character LIMIT 5;')
pg_curs.fetchall()


pg_curs.execute('SELECT * FROM charactercreator_character;')
pg_characters = pg_curs.fetchall()

# Spot checks
for character, pg_character in zip(characters, pg_characters):
assert character == pg_character

# Closing cursor/connection
pg_curs.close()
pg_conn.close()
sl_curs.close()
sl_conn.close()
Loading