-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.py
More file actions
58 lines (44 loc) · 1.43 KB
/
setup.py
File metadata and controls
58 lines (44 loc) · 1.43 KB
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
import os
import pandas as pd
import alembic.config
from core import create_app
from model import Character, Potion, Spell, db
def run_setup(config_name="DevelopmentConfig"):
alembic.config.main(
argv=[
"--raiseerr",
f"-xconfig={config_name}",
"upgrade",
"head",
]
)
rename_columns = lambda x: x.lower().replace(" ", "_")
trim_strings = lambda x: x.strip() if isinstance(x, str) else x
characters_data = (
pd.read_csv("csv_data/Characters.csv", sep=";")
.rename(columns=rename_columns)
.applymap(trim_strings)
)
potions_data = (
pd.read_csv("csv_data/Potions.csv", sep=";")
.rename(columns=rename_columns)
.applymap(trim_strings)
)
spells_data = (
pd.read_csv("csv_data/Spells.csv", sep=";")
.rename(columns=rename_columns)
.applymap(trim_strings)
)
db.session.bulk_save_objects(
[Character(**row) for row in characters_data.to_dict("records")]
+ [Potion(**row) for row in potions_data.to_dict("records")]
+ [Spell(**row) for row in spells_data.to_dict("records")]
)
db.session.commit()
if __name__ == "__main__":
app = create_app()
app.app_context().push()
database_file = app.config["SQLALCHEMY_DATABASE_URI"].replace("sqlite://", "")
if os.path.exists(database_file):
os.remove(database_file)
run_setup()