<filename>create_tables.py
import psycopg2
from sql_queries import create_table_queries, drop_table_queries
import argparse

# Add argument when running the script
parser = argparse.ArgumentParser()
parser.add_argument("--host", type=str, help="host address of the database", default="127.0.0.1")
parser.add_argument("--dbname", type=str, help="name of the database", default="studentdb")
parser.add_argument("--user", type=str, help="user you're logging in with", default="student")
parser.add_argument("--pw", type=str, help="password of the user", default="<PASSWORD>")
args = parser.parse_args()

def create_database():
    """
    - Creates and connects to the sparkifydb
    - Returns the connection and cursor to sparkifydb
    """
    
    # connect to default database
    conn = psycopg2.connect(f"host={args.host} dbname={args.dbname} user={args.user} password={args.pw}")
    conn.set_session(autocommit=True)
    cur = conn.cursor()
    
    # create sparkify database with UTF8 encoding
    cur.execute("DROP DATABASE IF EXISTS sparkifydb")
    cur.execute("CREATE DATABASE sparkifydb WITH ENCODING 'utf8' TEMPLATE template0")

    # close connection to default database
    conn.close()    
    
    # connect to sparkify database
    conn = psycopg2.connect("host=127.0.0.1 dbname=sparkifydb user=student password=<PASSWORD>")
    cur = conn.cursor()
    
    return cur, conn


def drop_tables(cur, conn):
    """
    Drops each table using the queries in `drop_table_queries` list.
    """
    for query in drop_table_queries:
        cur.execute(query)
        conn.commit()


def create_tables(cur, conn):
    """
    Creates each table using the queries in `create_table_queries` list. 
    """
    for query in create_table_queries:
        cur.execute(query)
        conn.commit()


def main():
    """
    - Drops (if exists) and Creates the sparkify database. 
    
    - Establishes connection with the sparkify database and gets
    cursor to it.  
    
    - Drops all the tables.  
    
    - Creates all tables needed. 
    
    - Finally, closes the connection. 
    """
    cur, conn = create_database()
    
    drop_tables(cur, conn)
    create_tables(cur, conn)

    conn.close()


if __name__ == "__main__":
    main()
<filename>create_tables.py
import psycopg2
from sql_queries import create_table_queries, drop_table_queries
import argparse

# Add argument when running the script
parser = argparse.ArgumentParser()
parser.add_argument("--host", type=str, help="host address of the database", default="127.0.0.1")
parser.add_argument("--dbname", type=str, help="name of the database", default="studentdb")
parser.add_argument("--user", type=str, help="user you're logging in with", default="student")
parser.add_argument("--pw", type=str, help="password of the user", default="<PASSWORD>")
args = parser.parse_args()

def create_database():
    """
    - Creates and connects to the sparkifydb
    - Returns the connection and cursor to sparkifydb
    """
    
    # connect to default database
    conn = psycopg2.connect(f"host={args.host} dbname={args.dbname} user={args.user} password={args.pw}")
    conn.set_session(autocommit=True)
    cur = conn.cursor()
    
    # create sparkify database with UTF8 encoding
    cur.execute("DROP DATABASE IF EXISTS sparkifydb")
    cur.execute("CREATE DATABASE sparkifydb WITH ENCODING 'utf8' TEMPLATE template0")

    # close connection to default database
    conn.close()    
    
    # connect to sparkify database
    conn = psycopg2.connect("host=127.0.0.1 dbname=sparkifydb user=student password=<PASSWORD>")
    cur = conn.cursor()
    
    return cur, conn


def drop_tables(cur, conn):
    """
    Drops each table using the queries in `drop_table_queries` list.
    """
    for query in drop_table_queries:
        cur.execute(query)
        conn.commit()


def create_tables(cur, conn):
    """
    Creates each table using the queries in `create_table_queries` list. 
    """
    for query in create_table_queries:
        cur.execute(query)
        conn.commit()


def main():
    """
    - Drops (if exists) and Creates the sparkify database. 
    
    - Establishes connection with the sparkify database and gets
    cursor to it.  
    
    - Drops all the tables.  
    
    - Creates all tables needed. 
    
    - Finally, closes the connection. 
    """
    cur, conn = create_database()
    
    drop_tables(cur, conn)
    create_tables(cur, conn)

    conn.close()


if __name__ == "__main__":
    main()
# Add argument when running the script - Creates and connects to the sparkifydb     - Returns the connection and cursor to sparkifydb # connect to default database # create sparkify database with UTF8 encoding # close connection to default database # connect to sparkify database Drops each table using the queries in `drop_table_queries` list. Creates each table using the queries in `create_table_queries` list. - Drops (if exists) and Creates the sparkify database.           - Establishes connection with the sparkify database and gets     cursor to it.            - Drops all the tables.            - Creates all tables needed.           - Finally, closes the connection.