πŸ” Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQLite Π² Flask ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ SEO

SQLite Flask is a combination of the SQLite database and the Flask web framework. SQLite is a lightweight, self-contained, and serverless database that is easy to set up and use. Flask, on the other hand, is a micro web framework written in Python that allows you to build web applications.

By integrating SQLite with Flask, you can easily create web applications that store and retrieve data from a database. Here's an example of how you can use SQLite with Flask:


from flask import Flask, g
import sqlite3

app = Flask(__name__)

DATABASE = 'path/to/database/file.db'

def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
    return db

@app.teardown_appcontext
def close_connection(exception):
    db = getattr(g, '_database', None)
    if db is not None:
        db.close()

@app.route('/')
def index():
    db = get_db()
    cursor = db.cursor()
    cursor.execute('SELECT * FROM my_table')
    data = cursor.fetchall()
    return str(data)

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

In this example, we define a Flask application and specify the path to our SQLite database file. We then define a function get_db() that establishes a connection to the database. The @app.teardown_appcontext decorator ensures that the database connection is closed properly after each request.

Inside the @app.route() decorator, we retrieve the database connection using get_db() and execute a SELECT query on a table named my_table. The results are then returned as a string.

This is just a simple example, but it shows you how you can use SQLite with Flask to build web applications with a database backend.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ SQLite с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Flask

SQLite ΠΈ Flask ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ инструмСнтами для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. SQLite - это Π»Π΅Π³ΠΊΠΈΠΉ, встраиваСмый SQL Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² локальной Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Flask - это Π»Π΅Π³ΠΊΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС программирования Python. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQLite с Flask для создания динамичСских Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅

Для Π½Π°Ρ‡Π°Π»Π° ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ установлСн Python, Flask ΠΈ SQLite. Если ΠΎΠ½ΠΈ Π½Π΅ установлСны, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:


pip install flask

pip install sqlite3

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQLite

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг - созданиС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQLite. Для этого создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» database.db с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Python ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


import sqlite3

conn = sqlite3.connect('database.db')
print("Opened database successfully")

conn.execute('''CREATE TABLE STUDENTS
         (ID INT PRIMARY KEY     NOT NULL,
         NAME           TEXT    NOT NULL,
         AGE            INT     NOT NULL);''')
print("Table created successfully")

conn.close()

НаписаниС кода Flask

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… SQLite создана, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ написанию ΠΊΠΎΠ΄Π° Flask. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» app.py ΠΈ Π²ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


from flask import Flask, render_template
import sqlite3

app = Flask(__name__)

@app.route('/')
def index():
    conn = sqlite3.connect('database.db')
    print("Opened database successfully")

    cursor = conn.execute("SELECT id, name, age from STUDENTS")
    students = []
    for row in cursor:
        students.append({'id': row[0], 'name': row[1], 'age': row[2]})

    conn.close()
    return render_template('index.html', students=students)

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

БозданиС HTML-шаблона

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим HTML-шаблон для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQLite. Π’ ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ создайтС ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ templates ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ создайтС Ρ„Π°ΠΉΠ» index.html со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

<!DOCTYPE html>
<html>
<head>
    <title>Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹</title>
</head>
<body>
    <h1>Бписок студСнтов</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Имя</th>
            <th>Возраст</th>
        </tr>
        {% for student in students %}
        <tr>
            <td>{{ student.id }}</td>
            <td>{{ student.name }}</td>
            <td>{{ student.age }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

Запуск прилоТСния

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ создали Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite, написали ΠΊΠΎΠ΄ Flask ΠΈ создали HTML-шаблон, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ своС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


python app.py

ПослС этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу http://localhost:5000. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ страницу со списком студСнтов ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQLite.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ внСсти измСнСния Π² ΠΊΠΎΠ΄ Flask. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов POST:


@app.route('/add', methods=['POST'])
def add_student():
    id = request.form['id']
    name = request.form['name']
    age = request.form['age']

    conn = sqlite3.connect('database.db')
    print("Opened database successfully")

    conn.execute("INSERT INTO STUDENTS (ID, NAME, AGE) VALUES (?, ?, ?)", (id, name, age))
    conn.commit()

    conn.close()

    return redirect(url_for('index'))

Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ HTML-Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚:

<form action="{{ url_for('add_student') }}" method="post">
    <label for="id">ID:</label>
    <input type="text" name="id" id="id"><br>
    <label for="name">Имя:</label>
    <input type="text" name="name" id="name"><br>
    <label for="age">Возраст:</label>
    <input type="text" name="age" id="age"><br>
    <input type="submit" value="Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ студСнта">
</form>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΠΎΡ€ΠΌΡƒ для добавлСния Π½ΠΎΠ²Ρ‹Ρ… студСнтов Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite.

Π’Ρ‹Π²ΠΎΠ΄

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQLite с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Flask для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠœΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Flask для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ отобраТСния ΠΈΡ… Π½Π° Π²Π΅Π±-страницС. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ рассмотрСли, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTML-Ρ„ΠΎΡ€ΠΌΡ‹. НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ использованиС SQLite Π² сочСтании с Flask.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Flask / #3 - Π Π°Π±ΠΎΡ‚Π° с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… SQLite

Python Flask development with SQLite

Flask SQLite Web Application Step by Step Tutorial - HTML, Jinja, CSS, JavaScript, Python

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQLite Π² Flask ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ SEO