Skip to content

Commit cb45af6

Browse files
committed
relational-mapping
1 parent 21d2292 commit cb45af6

21 files changed

+483
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/python3
2+
"""
3+
Lists the State object with the name passed as argument
4+
from the database hbtn_0e_6_usa.
5+
Usage: ./10-model_state_my_get.py <mysql username> /
6+
<mysql password> /
7+
<database name>
8+
<state name searched>
9+
"""
10+
11+
import sys
12+
from sqlalchemy import create_engine
13+
from sqlalchemy.orm import sessionmaker
14+
from model_state import State
15+
16+
if __name__ == "__main__":
17+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
18+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
19+
pool_pre_ping=True)
20+
Session = sessionmaker(bind=engine)
21+
session = Session()
22+
23+
found = False
24+
for state in session.query(State):
25+
if state.name == sys.argv[4]:
26+
print("{}".format(state.id))
27+
found = True
28+
break
29+
if found is False:
30+
print("Not found")
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/python3
2+
"""
3+
Creates the State “California” with the City “San Francisco”
4+
from the database hbtn_0e_100_usa.
5+
Usage: ./100-relationship_states_cities.py <mysql username> /
6+
<mysql password> /
7+
<database name>
8+
"""
9+
10+
import sys
11+
from sqlalchemy import create_engine
12+
from sqlalchemy.orm import sessionmaker
13+
from relationship_state import State
14+
from relationship_city import Base, City
15+
16+
if __name__ == "__main__":
17+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
18+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
19+
pool_pre_ping=True)
20+
Base.metadata.create_all(engine)
21+
Session = sessionmaker(bind=engine)
22+
session = Session()
23+
24+
session.add(City(name="San Francisco", state=State(name="California")))
25+
session.commit()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/python3
2+
"""
3+
Lists all States and corresponding Cities in the database hbtn_0e_101_usa.
4+
Usage: ./101-relationship_states_cities_list.py <mysql username> /
5+
<mysql password> /
6+
<database name>
7+
"""
8+
9+
import sys
10+
from sqlalchemy import create_engine
11+
from sqlalchemy.orm import sessionmaker
12+
from relationship_state import State
13+
from relationship_city import City
14+
15+
if __name__ == "__main__":
16+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
17+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
18+
pool_pre_ping=True)
19+
Session = sessionmaker(bind=engine)
20+
session = Session()
21+
22+
for state in session.query(State).order_by(State.id):
23+
print("{}: {}".format(state.id, state.name))
24+
for city in state.cities:
25+
print(" {}: {}".format(city.id, city.name))
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/usr/bin/python3
2+
"""
3+
Lists all City objects from the database hbtn_0e_101_usa.
4+
Usage: ./102-relationship_cities_states_list.py <mysql username> /
5+
<mysql password> /
6+
<database name>
7+
"""
8+
9+
import sys
10+
from sqlalchemy import create_engine
11+
from sqlalchemy.orm import sessionmaker
12+
from relationship_state import State
13+
from relationship_city import City
14+
15+
if __name__ == "__main__":
16+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
17+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
18+
pool_pre_ping=True)
19+
Session = sessionmaker(bind=engine)
20+
session = Session()
21+
22+
for city in session.query(City).order_by(City.id):
23+
print("{}: {} -> {}".format(city.id, city.name, city.state.name))
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/python3
2+
"""
3+
Adds the State object "Louisiana" to the database hbtn_0e_6_usa.
4+
Usage: ./11-model_state_insert.py <mysql username> /
5+
<mysql password> /
6+
<database name>
7+
"""
8+
9+
import sys
10+
from sqlalchemy import create_engine
11+
from sqlalchemy.orm import sessionmaker
12+
from model_state import State
13+
14+
if __name__ == "__main__":
15+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
16+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
17+
pool_pre_ping=True)
18+
Session = sessionmaker(bind=engine)
19+
session = Session()
20+
21+
louisiana = State(name="Louisiana")
22+
session.add(louisiana)
23+
session.commit()
24+
print(louisiana.id)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/python3
2+
"""
3+
Changes the name of the State object where id = 2 to
4+
New Mexico in the database hbtn_0e_6_usa.
5+
Usage: ./12-model_state_update_id_2.py <mysql username> /
6+
<mysql password> /
7+
<database name>
8+
"""
9+
10+
import sys
11+
from sqlalchemy import create_engine
12+
from sqlalchemy.orm import sessionmaker
13+
from model_state import State
14+
15+
if __name__ == "__main__":
16+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
17+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
18+
pool_pre_ping=True)
19+
Session = sessionmaker(bind=engine)
20+
session = Session()
21+
22+
state = session.query(State).filter_by(id=2).first()
23+
state.name = "New Mexico"
24+
session.commit()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/python3
2+
"""
3+
Deletes all State objects with a name containing
4+
the letter a from the database hbtn_0e_6_usa.
5+
Usage: ./13-model_state_delete_a.py <mysql username> /
6+
<mysql password> /
7+
<database name>
8+
"""
9+
10+
import sys
11+
from sqlalchemy import create_engine
12+
from sqlalchemy.orm import sessionmaker
13+
from model_state import State
14+
15+
if __name__ == "__main__":
16+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
17+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
18+
pool_pre_ping=True)
19+
Session = sessionmaker(bind=engine)
20+
session = Session()
21+
22+
for state in session.query(State):
23+
if "a" in state.name:
24+
session.delete(state)
25+
session.commit()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/python3
2+
"""
3+
Lists all City objects from the database hbtn_0e_14_usa.
4+
Usage: ./14-model_city_fetch_by_state.py <mysql username> /
5+
<mysql password> /
6+
<database name>
7+
"""
8+
9+
import sys
10+
from sqlalchemy import create_engine
11+
from sqlalchemy.orm import sessionmaker
12+
from model_state import State
13+
from model_city import City
14+
15+
if __name__ == "__main__":
16+
engine = create_engine("mysql+mysqldb://{}:{}@localhost/{}"
17+
.format(sys.argv[1], sys.argv[2], sys.argv[3]),
18+
pool_pre_ping=True)
19+
Session = sessionmaker(bind=engine)
20+
session = Session()
21+
22+
for city, state in session.query(City, State) \
23+
.filter(City.state_id == State.id) \
24+
.order_by(City.id):
25+
print("{}: ({}) {}".format(state.name, city.id, city.name))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/python3
2+
"""
3+
Lists all states with a name starting with N from the database hbtn_0e_0_usa.
4+
Usage: ./1-filter_states.py <mysql username> \
5+
<mysql password> \
6+
<database name>
7+
"""
8+
9+
import sys
10+
import MySQLdb
11+
12+
if __name__ == "__main__":
13+
"""
14+
Access to the database and get the states
15+
from the database.
16+
"""
17+
db = MySQLdb.connect(user=sys.argv[1], passwd=sys.argv[2], db=sys.argv[3])
18+
c = db.cursor()
19+
c.execute("SELECT * \
20+
FROM `states` \
21+
WHERE BINARY `name` = '{}'".format(sys.argv[4]))
22+
[print(state) for state in c.fetchall()]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/python3
2+
"""
3+
Displays all values in the states table of the database hbtn_0e_0_usa
4+
whose name matches that supplied as argument.
5+
Usage: ./2-my_filter_states.py <mysql username> \
6+
<mysql password> \
7+
<database name> \
8+
<state name searched>
9+
"""
10+
11+
import MySQLdb
12+
import sys
13+
14+
if __name__ == "__main__":
15+
"""
16+
Access to the database and get the states
17+
from the database.
18+
"""
19+
db = MySQLdb.connect(user=sys.argv[1], passwd=sys.argv[2], db=sys.argv[3])
20+
c = db.cursor()
21+
c.execute("SELECT * FROM `states`")
22+
[print(state) for state in c.fetchall() if state[1] == sys.argv[4]]

0 commit comments

Comments
 (0)