Запуск python сервера - SevenLines/university-map GitHub Wiki
Попробуем теперь запустить с бэкендом, то есть с той часть которая на python, и общается с базой.
Сначала надо скопировать файлик settings_sample.yaml и переименовать его в settings.yaml
Затем открыть блокнотом settings.yaml или в чем там вы файлы текстовые пишите:
Внутри settings.yaml будет две строчки.
SQLALCHEMY_DATABASE_URI: mssql+pyodbc://sa:123@.\SQL2008/SPR_POLITEX?driver=SQL+Server+Native+Client+10.0
SECRET_KEY: F8Jh4vCzewG2uU7lMfHCZ4m1fv884oQ7
Первая это строка подключение к базе данных. Собственно ее надо адаптировать под свои настройки. Она имеет формат
mssql+pyodbc://{user}:{password}@{server_instance}/{database_name}?driver={driver_name}
список доступных driver_name можно подсмотреть так
Если вы конектетесь с локальным юзером то строка будет выглядеть так
mssql+pyodbc://.\SQL2008/SPR_POLITEX?driver=SQL+Server+Native+Client+10.0
если инстанс по умолчанию, то вот так
mssql+pyodbc://./SPR_POLITEX?driver=SQL+Server+Native+Client+10.0
И так, теперь идем в папку с сервером. Если из git bash консоли, то если вы находитесь в папке client, то можно подняться на уровень выше, если написать
cd ..
ну а затем переходим в папку server (кстати для ускорения чтобы не писать все слово server целиком, можно нажать TAB)
cd server
ну либо просто открыть новую баш консоль
перво наперво надо установить все пакеты. То есть это уже заранее написанные за нас куски кода, которые упрощают работу с БД, создание серверов и тому подобное.
Все эти пакеты перечислены в файле requirements.txt
Flask==1.0.3 # мини веб сервер, которые умеет слушать запросы из браузера и отвечать на них
PyYaml==5.1 # для работы с yaml файлами
flask-restplus==-0.11.0 # расширение для Flask, для создания api
Flask-SQlAlchemy==2.4 # расширение для Flask, для работы с БД
Flask-WTF==-0.14.2 # расширения для Flask, для более грамотной обработки данных отправленных с сервера
pyodbc==4.0.26 # драйвер для подключения к MSSQL серверу
Для этого находясь в папке server пишем команду:
conda config --add channels conda-forge
conda install --file requirements.txt
он спросит вас подтверждение на установку
надо написать "y", нажать Enter и дождаться установки
почему то один пакет не ставится через конду, так что его приходится ставить через pip
pip install -r requirements.txt
теперь можно попробовать запустить проект. пишем:
python app_server.py
по сути мы просто запускаем на исполнение содержимое файла app_server.py
открываем http://localhost:8000/api/auditories/list/ и если строка подключения к БД была правильной, то увидим:
url к строке браузера, это на самом деле был запрос к нашему приложению. И мы видим как в консольке появилось строка с усеченым адресом.
Если немного забежать вперед то с точки зрения python сервера, вызвалась функция get внутри класса AuditoriesList:
# file: server.namespaces.auditories.py
api = Namespace("auditories")
@api.route('/list')
class AuditoriesList(Resource):
def get(self):
# запросили все аудитории из базы данных упорядоченный по имени
auditories = Auditory.query.order_by(Auditory.title)
# сформировали ответ в виде словарика
# {id_аудитории1: {данные об аудитории 1}, id_аудитории2: {данные об аудитории 2}, ...}
result = {a.id: {
"id": a.id,
"title": a.title.strip(),
"key": Auditory.get_key(a.title),
} for a in auditories}
return result