Configuration de la base de données SQLite avec Python Flask

FlaskFlaskBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à définir et à accéder à une base de données SQLite à l'aide du framework Python Flask. Nous allons configurer une base de données SQLite, établir une connexion avec elle, créer des tables et initialiser la base de données.

Note : Vous devez créer le fichier de code vous-même et l'exécuter dans l'environnement. Vous pouvez prévisualiser l'état du service Flask sur le Web 5000.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL flask(("Flask")) -.-> flask/DataHandlingGroup(["Data Handling"]) flask(("Flask")) -.-> flask/CoreConceptsGroup(["Core Concepts"]) flask(("Flask")) -.-> flask/DevelopmentToolsGroup(["Development Tools"]) flask/DataHandlingGroup -.-> flask/incoming_request_data("Incoming Request Data") flask/DataHandlingGroup -.-> flask/application_globals("Application Globals") flask/DataHandlingGroup -.-> flask/response_objects("Response Objects") flask/CoreConceptsGroup -.-> flask/application_object("Application Object") flask/CoreConceptsGroup -.-> flask/sessions("Sessions") flask/CoreConceptsGroup -.-> flask/session_interface("Session Interface") flask/CoreConceptsGroup -.-> flask/useful_internals("Useful Internals") flask/DevelopmentToolsGroup -.-> flask/blueprint_objects("Blueprint Objects") flask/DevelopmentToolsGroup -.-> flask/command_line_interface("Command Line Interface") subgraph Lab Skills flask/incoming_request_data -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/application_globals -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/response_objects -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/application_object -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/sessions -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/session_interface -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/useful_internals -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/blueprint_objects -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} flask/command_line_interface -.-> lab-136336{{"Configuration de la base de données SQLite avec Python Flask"}} end

Configuration de la base de données

Tout d'abord, nous devons configurer une base de données SQLite pour stocker les utilisateurs et les publications. SQLite est un choix pratique car il n'est pas nécessaire d'avoir un serveur de base de données séparé et est intégré à Python.

Dans notre application Flask, nous allons créer une connexion à la base de données SQLite. Cette connexion est généralement liée à la requête dans les applications web et est fermée une fois le travail terminé.

La connexion est établie à l'aide de la fonction sqlite3.connect et nous utilisons l'objet spécial Flask g pour stocker et réutiliser la connexion.

Créez un nouveau fichier Python db.py et ajoutez le code suivant :

## flaskr/db.py

import sqlite3
from flask import current_app, g

def get_db():
    ## Vérifiez si 'db' n'est pas dans 'g'
    if 'db' not in g:
        ## Établissez une connexion à la base de données
        g.db = sqlite3.connect(
            current_app.config['DATABASE'],
            detect_types=sqlite3.PARSE_DECLTYPES
        )
        ## Retournez les lignes qui se comportent comme des dictionnaires
        g.db.row_factory = sqlite3.Row

    return g.db

def close_db(e=None):
    ## Supprimez 'db' de 'g' et fermez la connexion s'il existe
    db = g.pop('db', None)

    if db is not None:
        db.close()

Création des tables

En SQLite, les données sont stockées dans des tables et des colonnes. Nous devons les créer avant de pouvoir stocker et récupérer des données. Notre application stockera les utilisateurs dans la table user et les publications dans la table post.

Créez un nouveau fichier SQL schema.sql et ajoutez le code suivant :

## flaskr/schema.sql

DROP TABLE IF EXISTS user;
DROP TABLE IF EXISTS post;

CREATE TABLE user (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT UNIQUE NOT NULL,
  password TEXT NOT NULL
);

CREATE TABLE post (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  author_id INTEGER NOT NULL,
  created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  FOREIGN KEY (author_id) REFERENCES user (id)
);

Initialisation de la base de données

Ensuite, nous allons ajouter des fonctions Python qui exécuteront les commandes SQL pour créer les tables. Ajoutez les fonctions suivantes au fichier db.py :

## flaskr/db.py

def init_db():
    db = get_db()

    with current_app.open_resource('schema.sql') as f:
        db.executescript(f.read().decode('utf8'))

@click.command('init-db')
def init_db_command():
    """Clear the existing data and create new tables."""
    init_db()
    click.echo('Initialized the database.')

Inscription à l'application

Les fonctions close_db et init_db_command doivent être enregistrées avec l'instance de l'application pour être utilisées par l'application. Étant donné que nous utilisons une fonction de fabrique, nous allons écrire une fonction qui prend une application et effectue l'enregistrement.

Ajoutez la fonction suivante au fichier db.py :

## flaskr/db.py

def init_app(app):
    app.teardown_appcontext(close_db)
    app.cli.add_command(init_db_command)

Ensuite, importez et appelez cette fonction à partir de la fabrique. Ajoutez le code suivant au fichier __init__.py :

## flaskr/__init__.py

def create_app():
    app =...
    ## code existant omis

    from. import db
    db.init_app(app)

    return app

Initialisation du fichier de base de données

Maintenant que init-db a été enregistré avec l'application, il peut être appelé en utilisant la commande flask.

Exécutez la commande init-db :

flask --app flaskr init-db
Initialized the database.

Récapitulatif

Dans ce laboratoire, nous avons appris à définir et à accéder à une base de données SQLite à l'aide du framework Python Flask. Nous avons créé une connexion à la base de données, créé des tables et initialisé la base de données. Ceci est fondamental pour toute application web qui a besoin de stocker et de récupérer des données à partir d'une base de données.