Реализуем веб интерфейс на Flask и Python для доступа к базе sqlite

Здравствуйте! Создание веб-интерфейса для работы с SQL в Python с использованием Flask — это отличный способ предоставить пользователям доступ к базе данных через веб-браузер. Итак, начнем:

1. Установка Flask

Первым шагом является установка Flask:

pip install Flask

2. Настройка проекта

Создайте каталог для вашего проекта и создайте в нем файлы. Назовем наш проект sql_flask_app.

3. Написание кода

app.py


from flask import Flask, render_template, request
import sqlite3

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/query', methods=['POST'])
def query():
    query_text = request.form['query']
    conn = sqlite3.connect('example.db')
    cur = conn.cursor()
    cur.execute(query_text)
    rows = cur.fetchall()
    conn.close()
    return render_template('result.html', rows=rows)

if __name__ == '__main__':
    app.run(debug=True)

templates/index.html


<!DOCTYPE html>
<html>
<head>
    <title>SQL Flask App</title>
</head>
<body>
    <h1>SQL Flask App</h1>
    <form action="/query" method="post">
        <textarea name="query" rows="4" cols="50"></textarea><br>
        <input type="submit" value="Run Query">
    </form>
</body>
</html>

templates/result.html


<!DOCTYPE html>
<html>
<head>
    <title>Query Result</title>
</head>
<body>
    <h1>Query Result</h1>
    <table border="1">
        <thead>
            <tr>
                {% for column_name in rows[0].keys() %}
                    <th>{{ column_name }}</th>
                {% endfor %}
            </tr>
        </thead>
        <tbody>
            {% for row in rows %}
                <tr>
                    {% for value in row %}
                        <td>{{ value }}</td>
                    {% endfor %}
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

4. Запуск приложения

Запустите приложение, выполнив в командной строке:

python app.py

Заключение

Теперь у вас есть простое веб-приложение на Flask, которое позволяет пользователям отправлять SQL-запросы к базе данных. Обратите внимание, что этот код не обрабатывает ошибки ввода пользователей и не реализует безопасность ввода данных, поэтому в реальном проекте вам следует уделить этому внимание.

Источник