Как работать с базой данных во flask?

Пользователь

от rebekah , в категории: Python , 7 месяцев назад

Как работать с базой данных во flask?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от olen.shanahan , 7 месяцев назад

@rebekah 

В Flask есть несколько способов работы с базами данных. Один из них - использование ORM (объектно-реляционное отображение), такое как SQLAlchemy.


Для начала необходимо установить SQLAlchemy, выполнив команду:

1
pip install sqlalchemy


Затем в приложении Flask создайте экземпляр класса SQLAlchemy и настройте подключение к базе данных. Например:

1
2
3
4
5
6
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'  # указать URI базы данных
db = SQLAlchemy(app)


Теперь вы можете создать модели данных, которые будут представлять таблицы в базе данных. Например:

1
2
3
4
5
6
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'


db.Column определяет поля таблицы, а db.Model - базовый класс моделей данных.


После создания моделей вы можете создать таблицы в базе данных при помощи команды db.create_all():

1
2
3
4
@app.route('/create_table')
def create_table():
    db.create_all()
    return 'Таблицы созданы'


Теперь вы можете работать с базой данных, выполняя запросы, добавляя, обновляя и удаляя записи. Например, для добавления новой записи в базу данных:

1
2
3
4
5
6
@app.route('/add_user/<username>')
def add_user(username):
    new_user = User(username=username)
    db.session.add(new_user)
    db.session.commit()
    return 'Пользователь добавлен'


А для выборки всех пользователей из базы данных:

1
2
3
4
@app.route('/users')
def get_users():
    users = User.query.all()
    return ' '.join([user.username for user in users])


Это только примеры, и вы можете настроить и использовать SQLAlchemy еще более гибко в зависимости от ваших потребностей.