1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
"""Installs some sample data. Here we have a handful of postal codes for a few US/
Canadian cities. Then, 100 Person records are installed, each with a
randomly selected postal code.
"""
from .environment import Session, Base
from .model import City, Country, PostalCode, Person, Address
import random
def install():
Base.metadata.create_all(Session().bind)
data = [
("Chicago", "United States", ("60601", "60602", "60603", "60604")),
("Montreal", "Canada", ("H2S 3K9", "H2B 1V4", "H7G 2T8")),
("Edmonton", "Canada", ("T5J 1R9", "T5J 1Z4", "T5H 1P6")),
(
"New York",
"United States",
("10001", "10002", "10003", "10004", "10005", "10006"),
),
(
"San Francisco",
"United States",
("94102", "94103", "94104", "94105", "94107", "94108"),
),
]
countries = {}
all_post_codes = []
for city, country, postcodes in data:
try:
country = countries[country]
except KeyError:
countries[country] = country = Country(country)
city = City(city, country)
pc = [PostalCode(code, city) for code in postcodes]
Session.add_all(pc)
all_post_codes.extend(pc)
for i in range(1, 51):
person = Person(
"person %.2d" % i,
Address(
street="street %.2d" % i,
postal_code=all_post_codes[
random.randint(0, len(all_post_codes) - 1)
],
),
)
Session.add(person)
Session.commit()
# start the demo fresh
Session.remove()
|