Angular 4, Python

230
11 января 2018, 19:45

Добрый день, появилась задача разработки сервиса с фронтом на Ангуляре и бэкендом на Питоне. Видел много подобных материалов с использованием фреймворков(Джанго, Фласк).Но для меня Питон нужен только в качестве языка для SQL запросов. Попробовал получить результат, но, к сожалению, не получилось, поскольку необходимо отправить заголовки в ответе, но как это сделать не знаю.

#!/usr/bin/python
# -*- coding: utf-8
import MySQLdb
import json
db = MySQLdb.connect(host="127.0.0.1", user="root", passwd="", db="university", charset='utf8', use_unicode=True)
cursor = db.cursor()
sql = "SELECT * FROM student"
cursor.execute(sql)
data =  cursor.fetchall()
json.dumps(data, ensure_ascii = False)
# print(json.dumps(data, ensure_ascii = False))
def after_request(response):
  response.headers.add('Access-Control-Allow-Origin', '*')
  response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
  response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
  return response
db.close()

--------------service--------------------

@Injectable()
export class RequestService {
  // private headers: Headers = new Headers({'Content-Type': 'application/json'});
  constructor(private http:Http) { }
  getData(){
    return this.http.get("http://localhost/diplom/connect.py")
      .map(res=>{return res.json() });
  }
}

Помогите собрать файл с подключением к бд и отправкой основных заголовков, чтобы в дальнейшем импортировать его в файлы с другими запросами.

Answer 1

Если Вам просто нужен посредник между клиентом и БД на основе HTTP запросов, то нужно поднять локальный сервер, который будет ловить поступающие запросы, совершать необходимые действия с БД и отправлять ответы в нужном виде. Для этого существует масса фреймворков, из которых самый простой Flask.

Установка из командной строки:

pip install Flask

Пример простого сервера:

from flask import Flask
app = Flask(__name__)
# советую поставить этот флаг,
# тогда будет выводиться дополнительная информация об ошибках
app.debug = True
# перенаправляет запросы по адресу "/" на функцию ниже
@app.route("/")
def hello():
    # формируем ответ, HTML, JSON, что угодно
    resp = flask.Response("Hello, world!")
    # вешаем любые заголовки
    resp.headers['Access-Control-Allow-Origin'] = '*'
    # отправляем ответ
    return resp

Тогда подключение к БД будет в начале кода, а в обработчиках HTTP-запросов будут все Ваши запросы к БД.

Также можно по-разному обрабатывать разные типы запросов (GET, POST, etc), использовать URL аргументы и содержимое поступающего запроса. В общем, Flask это простой, но вполне полноценный фреймворк.

Полезные ссылки:

  • Документация Flask

  • Дополнительные материалы можно найти и на этом сайте по метке: flask

READ ALSO
Table 's' is specified twice

Table 's' is specified twice

Пишем запрос следующий:

271
PHP MYSQL получить значения из двух таблиц

PHP MYSQL получить значения из двух таблиц

Здравствуйте, мне нужно получить все поля из таблицы commentsВ таблице comments есть поле answerid

226
JSON ответ, flask

JSON ответ, flask

Добрый день, получаю ответ,при использовании flask,в таком виде:

194
Запрос в базу на получение записи по id

Запрос в базу на получение записи по id

Помогите составить корректный запрос в базу что бы можно было получать каждую запись по id, как single page

243