Skip to content

Commit 104b6de

Browse files
committed
add task 11
1 parent 16f1b1b commit 104b6de

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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)

0x0F-python-object_relational_mapping/test.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ sudo ./10-model_state_my_get.py root root hbtn_0e_6_usa Illinois
4444
sudo ./10-model_state_my_get.py root root hbtn_0e_6_usa Texas
4545

4646

47+
echo ""
48+
echo "========== Test task 11 ==========="
49+
sudo ./7-model_state_fetch_all.py root root hbtn_0e_6_usa
50+
51+
4752

4853

4954

0 commit comments

Comments
 (0)