Изучение Flask / #3 - Работа с базой данных SQLite

preview_player
Показать описание
Flask обеспечивает легкую и удобную работу со всеми популярными базами данных. За урок мы подключим базу данных SQLite к нашем проекту, а также создадим таблицу в базе данных и добавим в неё данные через пользовательский интерфейс.

✔ -------------

- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #goshaLessons
Рекомендации по теме
Комментарии
Автор

Не нашел инфы о каких-то проблемах на этом этапе у зрителей. Опишу свой опыт.
При запуске python в терминале, я пишу
>> from app import db
>> db.create_all()
и получаю ошибку
RuntimeError: Working outside of application context.

----
Перечитал кучу материала, но так и не смог разобраться с работой контекстов(потратил часа 2-3)
----
В итоге проблему решил следующим образом, текущую версию Flask-SQLAlchemy 3.0.2 понизил до 2.5.1
Юзал команду
pip install 'Flask-SQLAlchemy<3'
Не знаю, верно ли я сделал, но мне это помогло. Далее все срослось как у Гоши.
----
Благодарю за проделанную работу создателя контента!

viktort
Автор

Гоша, расскажи про MVT (аналог MVC) в пайтон. Структура, где какие файлы должны лежать и т.д.
Лайкайте, чтобы увидел

forward
Автор

Ох какой ШИКАРНЫЙ tutorial, то что нужно для знакомства с Flask! Спасибо

ponik_v_pudre
Автор

Гоша, а почему нужно использовать базу данных на основе именно этого класса от фласка? Почему нельзя просто импортировать библиотеку sqlite3 и самыми обычными запросами сохранять и доставать оттуда данные?

DIMFLIX
Автор

ЕСЛИ У ВАС ПРОБЛЕМЫ С СОЗДАНИЕМ БАЗЫ ДАННЫХ ЧЕРЕЗ SQLALCHEMY:
Проблема заключается в том, что способ показанный на видео устарел, поэтому некоторым помогает откат версии модуля на более старую.
Чтобы создать базу данных через терминал нужно в нем прописать:
python
from app (or other your file name) import app, db
app.app_context().push()
db.create_all()

nejimehb
Автор

Как вы это все запоминаете, столько всего 🫠

СемёнМихайлин-иф
Автор

Что делать если после db.create_all() ничего не произошло?

Charlottik
Автор

Почему после команды db.create_all() в терминале пишет ошибку (sqlite3.OperationalError) unable to open database file

dema_stat
Автор

Не создается база данных!
пишу в терминале VSCode: python
from main import db
ничего не происходит, только создается файл в папке с названием _pycache_ (но это не файл базы данных)

beaut_dude
Автор

Только так создало базу (тут появилась var\app-instance\)

В Terminal
flask shell

и далее:
from app import db, Article
db.create_all()

rootbvn
Автор

Для тех, у кого не работает кнопка отправить (выводится ошибка) - попробуйте установить pip install flask-sqlalchemy
и pip install jinja2, у меня все сработало. Если нет, то переустановите базу данных ( from название_файла import db и так далее

superroom
Автор

если не заполнять поля и просто нажать на кнопку Отправить, то в бд создасться запись с пустыми полями и с заполненным столбцом Даты.
Я поставил себе такую проверку:

if title and intro and text:
db.session.add(article)
db.session.commit()
return redirect('/')
else:
return redirect('/create-article')

Если все поля заполнены, то он создает запись и переходит на главную страницу, если не все поля были заполнены, то он снова попадает на туже страницу, для создания новой записи.

sevashpun
Автор

В Фласке предусмотрена какая либо защита для форм по типу как csrf в Джанго?

IrelandKing-qv
Автор

Спасибо автору за подробное изложение материала. Но хотел бы заметить, что не рекомендуется именовать переменные как ключевые слова или встроенные функции (id = db.Column....), Надеюсь, такие же, как я, новички это будут учитывать при именовании переменных. Если уж очень хочется - underscore нам в помощь :)

ДмитрийБурса-рн
Автор

Очень информативно, спасибо. Ещё бы урок по работе с формами.

Antonovpsan
Автор

Почему у меня не работает в терминале пайтона (from название файла import db)

sarfarozoripov
Автор

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

ВладиславСавицкий-вы
Автор

В чём ошибка?


from app import db
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'app'

noty___
Автор

>>> from app import db
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'app'

У кого такая же проблема была, как решили?

xkiller
Автор

Ошбика <dialectname> <argument> 10:30

АлексейКравченко-йж