-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathusers.py
80 lines (71 loc) · 2.94 KB
/
users.py
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import uuid
import datetime
import sqlalchemy as sa
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# константа, указывающая способ соединения с базой данных
DB_PATH = "sqlite:///sochi_athletes.sqlite3"
# базовый класс моделей таблиц
Base = declarative_base()
class User(Base):
"""
Описывает структуру таблицы athelete, содержащую данные об атлетах
"""
__tablename__ = 'user'
id = sa.Column(sa.Integer, primary_key=True)
first_name = sa.Column(sa.Text)
last_name = sa.Column(sa.Text)
gender = sa.Column(sa.Text)
email = sa.Column(sa.Text)
birthdate = sa.Column(sa.Text)
height = sa.Column(sa.Float)
def connect_db():
"""
Устанавливает соединение к базе данных, создает таблицы, если их еще нет и возвращает объект сессии
"""
# создаем соединение к базе данных
engine = sa.create_engine(DB_PATH)
# создаем описанные таблицы
Base.metadata.create_all(engine)
# создаем фабрику сессию
session = sessionmaker(engine)
# возвращаем сессию
return session()
def request_data():
"""
Запрашивает у пользователя данные и добавляет их в список users
"""
# выводим приветствие
print("Привет! Я запишу твои данные!")
# запрашиваем у пользователя данные
first_name = input("Введи своё имя: ")
last_name = input("А теперь фамилию: ")
gender = input("Пол: ")
email = input("Мне еще понадобится адрес твоей электронной почты: ")
birthdate = input("День рождения: ")
height = input("Рост: ")
# создаем нового пользователя
user = User(
first_name=first_name,
last_name=last_name,
gender=gender,
email=email,
birthdate=birthdate,
height=height
)
# возвращаем созданного пользователя
return user
def main():
"""
Осуществляет взаимодействие с пользователем, обрабатывает пользовательский ввод
"""
session = connect_db()
# запрашиваем данные пользоватлея
user = request_data()
# добавляем нового пользователя в сессию
session.add(user)
# сохраняем все изменения, накопленные в сессии
session.commit()
print("Спасибо, данные сохранены!")
if __name__ == "__main__":
main()