Как удалить flask python
Перейти к содержимому

Как удалить flask python

#5 — Удаление и обновление записей

#5 - Удаление и обновление записей

За видео мы добавим дополнительный функционал к нашему веб приложению. Мы добавим возможность для редактирования и удаления определенных записей из базы данных.

Видеоурок

Работа с уже созданными записями доволи проста и не требует особых усилий. Чтобы обновлять записи, вам изначально необходимо прописать нахождение нужной записи из БД и далее процесс обновления точно такой же, как и при добавлении новой записи.

@app.route('/posts//update', methods=['POST', 'GET']) def post_update(id): article = Article.query.get(id) if request.method == "POST": article.title = request.form['title'] try: db.session.commit() return redirect('/posts') except: return "При редактировании статьи произошла ошибка" else: return render_template("post_update.html", article=article)

Чтобы выполнить удаление данных, то вам также изначально необходимо получить определенную запись и далее выполнить её удаление:

# В функции принимаем ID определенной записи @app.route('/posts//del') def post_delete(id): article = Article.query.get_or_404(id) try: db.session.delete(article) db.session.commit() return redirect('/posts') except: return "При удалении статьи произошла ошибка"

Как удалять старые файлы на python

Admin 05.12.2020 Python

Будем удалять файлы из директории, если их больше определенного количества.

Функция сбора файлов в папке

def get_files ( path ) :
files = [ ]

directory = os . listdir ( path )
directory. sort ( reverse = True )

for file in directory:
if file . endswith ( ‘.jpg’ ) :
files. append ( file )
return files

Будем считать, что наши файлы были сохранены через timestamp. Пример есть в статье оптимизация скриншотов на python. Это нужно для их правильной сортировки.

Функция удаления старых файлов

Мы будем удалять файлы, если их будет становится больше 30 штук. Старые будут удаляться в первую очередь.

def remove_old_files ( path , files ) :
«»» Оставляет последние 30 файлов, остальные удаляет «»»
max_files = 30
if len ( files ) < max_files:
return
i = 0
for f in files:
i + = 1
if i > max_files:
os . remove ( os . path . join ( path , f ) )

Использование

path = ‘public/build/screenshots’
files = get_files ( path )
remove_old_files ( path , files )

Читайте также

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Как реализовать удаление пользователя с Flask-Login и SQLAlchemy?

Привет! Есть страница, где выводится список всех пользователей. Справа от каждого юзера — надпись «Удалить». Подскажите, как реализовать удаление записи из БД через графический интерфейс — ту самую надпись «Удалить»?

62a8b343dadbc520558516.jpeg

Для наглядности как это выглядит:

  ID .    > . Удалить  
  • Вопрос задан более года назад
  • 200 просмотров

Комментировать
Решения вопроса 1

ramzis

FullStackOverflow

@app.route('/user/delete/') def delete_user(id): # # Здесь удаляете пользователя по id. # User.query.filter_by(id=id).delete() # db.session.commit() . 

Ответ написан более года назад
Нравится 1 5 комментариев
Barsukoth @Barsukoth Автор вопроса
Улёт, спасибо)
Barsukoth @Barsukoth Автор вопроса

Я чуть-чуть дуб-дубом, а как сделать изменение?)
Всё так же: у нас есть список всех пользователей, ну и кнопка изменить, которая знает id нужного юзера из ссылки (то, как мне подсказали с удалением в этом Вопросе)

Пробую, но чет не представляю, как это может выглядеть. С документацией уже запутался. Я настругал такое:

@app.route('/user/edit/', methods=['GET', 'POST']) @login_required def edit_user(id): if current_user.admin == True: form = EditForm() # Вот на этом моменте я вообще не понимаю, что добавлять в аргументы # Данные, которые изменяю: fullname=form.fullname.data, # email=form.email.data, gpa=form.gpa.data, phone=form.phone.data user = User.query.filter_by(id=id).update() if form.validate_on_submit(): db.session.commit() flash('Данные изменены') return redirect(url_for('admin')) return render_template('edit_user.html', title='Изменить данные', form=form, user=user) flash('Изменить не получилось, нет доступа') return redirect(url_for('index'))
class EditForm(FlaskForm): fullname = StringField('Фамилия, имя, отчество', validators=[DataRequired()]) email = StringField('Email', validators=[DataRequired()]) gpa = FloatField('Средний балл аттестата') phone = IntegerField('Контактный телефон') submit = SubmitField('Изменить')

Веб-страничка. Просто форма для ввода, где value = значение, которое на данный момент у этого пользователя:

Select, Insert, Delete¶

Теперь, когда вы объявили модели пришло время для запроса данных из базы. Мы будем использовать модель определеннкю в глвае Быстрый старт .

Вставка записей¶

Прежде чем запросить какие либо данные, мы должны вставить эти данные в базу данных. Все ваши модели должны иметь конструктор, проверьте, что вы не забыли этого сделать. Конструкторы используются только вами, поэтому все зависит от того как вы их определите.

Вставка данных в базу данных проходит в три этапа:

  1. Создание объекта Python
  2. Добавление его в сессию
  3. Commit сессии

Сессия здесь это не Flask сессия, а Flask-SQLAlchemy. По сути это расширенная версия транзакции базы данных. Как это работает:

>>> from yourapp import User >>> me = User('admin', 'admin@example.com') >>> db.session.add(me) >>> db.session.commit() 

Отлично, это не сложно. Что здесь произошло? Перед тем как вы добавили объект в сессию, SQLAlchemy не планировал добавлять его в транзакцию. Это хорошо, потому что вы можете на данном этапе отменить изменения. Для примера представьте создание поста настранице, но вы только хотели посмотреть как будет выглядит пост в предварительном просмотре вместо сохраниения его в базу данных.

Вызов Функции add() добавляет объект. Она будет вызвать оператор INSERT для базы данных, но так как транзакция еще не завершена, вы не получаете идентификатор. Если вы выполните commit, ваш пользователь получет ID:

>>> me.id 1 

Удаление записей¶

Удаление записей очень простое, вместо add() используйте delete() :

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *