|
| 1 | +#!/usr/bin/python3 |
| 2 | + |
| 3 | +""" |
| 4 | +Module contains script that adds the |
| 5 | +State object “Louisiana” to the database hbtn_0e_6_usa |
| 6 | +""" |
| 7 | + |
| 8 | + |
| 9 | +def connect_db(host, port, username, passwd, db_name, **kwargs): |
| 10 | + """ |
| 11 | + Use SQLAlchemy to connect to |
| 12 | + MySQL server running on localhost at port 330 |
| 13 | +
|
| 14 | + Args: |
| 15 | + host(str or int): Database host to use |
| 16 | + post(int): DB port |
| 17 | + user(str): DB user to use |
| 18 | + passwd(str): DB user's password |
| 19 | + db(str): database name to connect to |
| 20 | +
|
| 21 | + Return: |
| 22 | + session(Session object): session object bind to our database |
| 23 | + """ |
| 24 | + from sqlalchemy import create_engine |
| 25 | + from sqlalchemy.orm import sessionmaker |
| 26 | + |
| 27 | + if kwargs["dialect"] and kwargs["driver"]: |
| 28 | + dialect = kwargs["dialect"] |
| 29 | + driver = kwargs["driver"] |
| 30 | + else: |
| 31 | + dialect = "mysql" |
| 32 | + driver = "mysqldb" |
| 33 | + |
| 34 | + # create engine object |
| 35 | + arg = f"{dialect}+{driver}://{username}:{passwd}@{host}:{port}/{db_name}" |
| 36 | + engine = create_engine( |
| 37 | + arg, |
| 38 | + pool_pre_ping=True, |
| 39 | + ) |
| 40 | + # create session object |
| 41 | + Session = sessionmaker(bind=engine) |
| 42 | + # bound sesion object to database |
| 43 | + session = Session() |
| 44 | + return session |
| 45 | + |
| 46 | + |
| 47 | +def print_data(data): |
| 48 | + """ |
| 49 | + Helper function used to print data |
| 50 | + """ |
| 51 | + try: |
| 52 | + print("{}".format(data.id)) |
| 53 | + except (AttributeError, IndexError) as e: |
| 54 | + pass |
| 55 | + |
| 56 | + |
| 57 | +def set_state(av): |
| 58 | + """ |
| 59 | + Get states with name passed as argument using sqlalchemy ORM |
| 60 | +
|
| 61 | + Args: |
| 62 | + av: list of arguments |
| 63 | + """ |
| 64 | + from model_state import Base, State |
| 65 | + |
| 66 | + # get connection credentials |
| 67 | + host = "localhost" |
| 68 | + port = 3306 |
| 69 | + user = av[0] |
| 70 | + passwd = av[1] |
| 71 | + db = av[2] |
| 72 | + # search_params = av[3] |
| 73 | + kwargs = {"dialect": "mysql", "driver": "mysqldb"} |
| 74 | + |
| 75 | + # connect to database |
| 76 | + session = connect_db(host, port, user, passwd, db_name=db, **kwargs) |
| 77 | + # set data |
| 78 | + louisiana = State(name="Louisiana") |
| 79 | + session.add(louisiana) |
| 80 | + # commit transaction into database |
| 81 | + session.commit() |
| 82 | + # state = session.query(State).filter(State.name == "Louisiana").first() |
| 83 | + print_data(louisiana) |
| 84 | + |
| 85 | + |
| 86 | +if __name__ == "__main__": |
| 87 | + from sys import argv |
| 88 | + |
| 89 | + av = argv[1:] |
| 90 | + set_state(av) |
0 commit comments