На четырнадцатой неделе курса мы изучим, как хранить и извлекать данные с помощью баз данных. Познакомимся с SQL, SQLite и интеграцией базы данных с веб-приложением на Flask. Это позволит создавать динамические сайты с регистрацией, авторизацией и пользовательским контентом.
База данных — это система хранения структурированных данных.
Реляционные базы (например, SQLite, PostgreSQL) используют таблицы и язык SQL для управления данными.
SQLite встроен в Python. Работа через `sqlite3`:
```python```
import sqlite3
conn = sqlite3.connect("database.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
cursor.execute("INSERT INTO users (name) VALUES (?)", ("Alice",))
conn.commit()
conn.close()
- SELECT — выборка данных
- INSERT — вставка записи
- UPDATE — изменение записи
- DELETE — удаление записи
```sql```
SELECT * FROM users WHERE name = 'Alice';
```python```
from flask import Flask, g
import sqlite3
app = Flask(__name__)
def get_db():
if "db" not in g:
g.db = sqlite3.connect("database.db")
return g.db
@app.teardown_appcontext
def close_db(error):
db = g.pop("db", None)
if db is not None:
db.close()
```python```
@app.route("/register", methods=["GET", "POST"])
def register():
if request.method == "POST":
username = request.form["username"]
db = get_db()
db.execute("INSERT INTO users (name) VALUES (?)", (username,))
db.commit()
return "Готово!"
return '''
<form method="post">
<input name="username">
<input type="submit">
</form>
'''
Flask-SQLAlchemy — ORM, упрощающая работу с базами:
```python```
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
Позволяют обновлять структуру базы:
```bash```
pip install flask-migrate
flask db init
flask db migrate -m "init"
flask db upgrade
1. Создайте форму, которая добавляет записи в базу данных.
2. Отобразите список пользователей на отдельной странице.
3. Используйте SQLAlchemy для моделирования таблицы.