Flask – это популярный веб-фреймворк в экосистеме Python, известный своей простотой и расширяемостью. Одним из ключевых компонентов веб-разработки является работа с базами данных, а SQLite — это легкий и простой в настройке движок базы данных. В этой статье мы рассмотрим различные методы выполнения запросов к базе данных с помощью Flask и SQLite, предоставив вам подробное руководство по овладению этим важным навыком.
- Подключение к базе данных 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()
- Выполнение 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)
- Параметризованные запросы.
Чтобы предотвратить атаки 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)
- Вставка данных.
Чтобы вставить данные в базу данных, вы можете использовать метод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'))
- Обновление и удаление данных.
Чтобы обновить или удалить данные, вы можете использовать метод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. Освоив эти методы, вы сможете с легкостью создавать мощные веб-приложения, управляемые данными.