Форум сайта python.su
0
Доброго времени суток
С недавнего времени я, лелея надежду однажды в будущем стать настоящим питоньеро, изучаю Python по книге. В данный момент я на этапе главы об обработчиках ошибок. Есть код веб-приложения
from flask import Flask, render_template, request, escape from mod import sl from DBcm import UseDatabase from checker import cl_in app = Flask(__name__) app.config['dbconfig'] = {'host': '192.168.100.141', 'user': 'vsu', 'password': 'vsp', 'database': 'vsdb',} def log_request(req: 'flask_request', res: str) -> None: with UseDatabase(app.config['dbconfig']) as cursor: SQL = """insert into log (phrase, letters, ip, browser_string, results) values (%s, %s, %s, %s, %s)""" cursor.execute(SQL, (req.form['phrase'], req.form['letters'], req.remote_addr, req.user_agent.browser, res, )) @app.route('/search4', methods=['POST']) def do_search() -> str: phrase = request.form['phrase'] letters = request.form['letters'] title = 'Here are your results' results = str(sl(phrase, letters)) try: log_request(request, results) except Exception as err: print('Error : ', str(err)) return render_template('results.html', the_phrase = phrase, the_letters = letters, the_title = title, the_results = results,) @app.route('/') @app.route('/entry') def entry_page() -> 'html': return render_template('entry.html', the_title='Welcome to SL on the web') @app.route('/viewlog') @cl_in def view_log() -> 'html': with UseDatabase(app.config['dbconfig']) as cursor: SQL = """select phrase, letters, ip, browser_string, results from log""" cursor.execute(SQL) contents = cursor.fetchall() titles = ('Phrse', 'Letters', 'Remote_addr', 'User_agent', 'Results') return render_template('viewlog.html', the_title = 'View Log', the_row_titles = titles, the_data = contents, ) @app.route('/login') def do_login() -> str: session['logged_in'] = True return 'You are now logged in' @app.route('/logout') def do_logout() -> str: session.pop('logged_in') return 'You are now logged_out' app.run(debug=True)
Отредактировано Ethex (Окт. 19, 2017 15:29:20)
Офлайн
0
Вот код диспетчера контекстов UseDatabase, который используется в функции, вызываемой внутри блока обработчика:
import mysql.connector class UseDatabase: def __init__(self, config: dict) -> None: self.configuration = config def __enter__(self) -> 'cursor': self.conn = mysql.connector.connect(**self.configuration) self.cursor = self.conn.cursor() return self.cursor def __exit__(self, exc_type, exc_value, exc_trace) -> None: self.conn.commit() self.cursor.close() self.conn.close()
Офлайн
0
Да, я, не подумав, влепил сюда длинный код, не пояснив какой функционал он выполняет и даже не привёл кода всех задействованных модулей… каюсь
Не знаю как вызвать ошибку соединения с БД. Но, судя по тому что автор книги не дал указаний, действие должно быть простое, не требуещего изучения кода
Офлайн
4
Думаю, подразумевалось, что нужно прибить сервис СУБД
Офлайн
0
Slow, подразумевается остановка сервера мускуля?
mysqladmin -u user -p shutdown ?
Офлайн
4
скорее,
service mysqld stop
Офлайн
0
Решил проблему отключением службы мускуля через панель управления
Приношу извинения за некоректную формулировку вопроса
Отредактировано Ethex (Окт. 20, 2017 18:16:37)
Офлайн