Освоение запросов к базе данных Flask SQLite: подробное руководство

Flask – это популярный веб-фреймворк в экосистеме Python, известный своей простотой и расширяемостью. Одним из ключевых компонентов веб-разработки является работа с базами данных, а SQLite — это легкий и простой в настройке движок базы данных. В этой статье мы рассмотрим различные методы выполнения запросов к базе данных с помощью Flask и SQLite, предоставив вам подробное руководство по овладению этим важным навыком.

  1. Подключение к базе данных SQLite:
    Перед выполнением каких-либо запросов необходимо установить соединение с базой данных SQLite. Flask предоставляет встроенное расширение SQLite под названием sqlite3, которое упрощает процесс. Вот пример подключения к базе данных SQLite:
import sqlite3
from flask import Flask
app = Flask(__name__)
app.config['DATABASE'] = 'path/to/database.db'
def get_db():
    if 'db' not in g:
        g.db = sqlite3.connect(app.config['DATABASE'])
    return g.db
@app.teardown_appcontext
def close_db(error):
    if hasattr(g, 'db'):
        g.db.close()
  1. Выполнение SQL-запросов.
    Установив соединение, вы можете выполнять SQL-запросы, используя метод execute(), предоставляемый объектом соединения SQLite. Вот пример выполнения простого запроса SELECT:
@app.route('/users')
def get_all_users():
    db = get_db()
    cursor = db.execute('SELECT * FROM users')
    users = cursor.fetchall()
    return render_template('users.html', users=users)
  1. Параметризованные запросы.
    Чтобы предотвратить атаки SQL-инъекций и повысить производительность, рекомендуется использовать параметризованные запросы. Метод execute()Flask поддерживает замену параметров с использованием заполнителя ?. Вот пример:
@app.route('/user/<int:user_id>')
def get_user(user_id):
    db = get_db()
    cursor = db.execute('SELECT * FROM users WHERE id = ?', (user_id,))
    user = cursor.fetchone()
    return render_template('user.html', user=user)
  1. Вставка данных.
    Чтобы вставить данные в базу данных, вы можете использовать метод execute()с запросом INSERT. Вот пример:
@app.route('/user', methods=['POST'])
def create_user():
    username = request.form['username']
    email = request.form['email']
    db = get_db()
    db.execute('INSERT INTO users (username, email) VALUES (?, ?)', (username, email))
    db.commit()
    flash('User created successfully!')
    return redirect(url_for('get_all_users'))
  1. Обновление и удаление данных.
    Чтобы обновить или удалить данные, вы можете использовать метод execute()с запросом UPDATE или DELETE соответственно. Вот пример обновления адреса электронной почты пользователя:
@app.route('/user/<int:user_id>', methods=['POST'])
def update_user_email(user_id):
    new_email = request.form['email']
    db = get_db()
    db.execute('UPDATE users SET email = ? WHERE id = ?', (new_email, user_id))
    db.commit()
    flash('Email updated successfully!')
    return redirect(url_for('get_user', user_id=user_id))

В этой статье мы рассмотрели различные методы выполнения запросов к базе данных SQLite с помощью Flask. От подключения к базе данных до выполнения запросов и манипулирования данными — теперь у вас есть прочная основа для работы с Flask и SQLite. Освоив эти методы, вы сможете с легкостью создавать мощные веб-приложения, управляемые данными.