very-very clear and simple! I used before Visual studio code, in particular for the debug. Had a lot of problem. IDLE+PDB is the best useful kit to debug Python modules! Thanks
Олег, запишите, пожалуйста, видео как производить миграции в базу данных, если модели были созданы не через db.model, а через Base = declarative_base(). Я попытался самостоятельно сделать модели этим способом, но для миграции требуется некая сущность "db" (flask db migrate), она же являлась экземплятом SQLAlchemy из flask_sqlalchemy. А что делать в случае, когда этой db нет? Если можно, то подскажите, пожалуйста, мне из этой ситуации выкрутиться )
Миграции делаются с помощью flask-migrate, который в свою очередь основан на alembic. Его (flask-migrate) нужно установить отдельно и настроить соответственно. Мне кажется, что проще переопредилить экземпляр SQLAlchemy через flask-sqlalchemy. При этом не так уж много нужно делать, да и имеющаяся база данных не будет затронута.
Python is a very powerful programming tool. It is worth studying and using in your work. And using debuggers will greatly simplify and improve the quality of work.
Спасибо за познавательное видео! Обычно пользуюсь PyCharm дебагом, где это и проще, и нагляднее, но давно интересовался, как работать напрямую через стандартную библиотеку (никак руки не доходили). За студентов из группы Pink Floyd - моё почтение вдвойне)
Олег, добрый вечер! Очень рад, что снова нашёл вас на TH-cam, у вас очень интересные и, самое главное, понятные видеоуроки без лишней информации Подскажите пожалуйста, есть ли вы в социальных сетях? И есть ли возможность с вами иногда консультироваться по поводу языка Python?
@@RedEyedCoderClub а будут ли у вас видео по парсингу? Или ваши, уже записанные уроки, не потеряли актуальность до сих пор? Хотелось бы побольше узнать о парсинге разных сайтов
Олег, здравствуйте! Смотрю ваш курс по Фласк на другом канале и нигде не могу найти ответ на вопрос. Подскажите, пожалуйста, в чем разница между тем, как вы создавали модель для бд: db = SQLAlchemy(app) class Post(db.Model)... и тем, что в интернете в статьях описывается: from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class Post(Base): Это идентичные записи или есть какое-то отличие? Очень тяжело разобраться, когда есть куча вариантов разных записей похожих действий)
Так писали еще при Царе-Горохе и при Николае II Кровавом. Это устаревший синтаксис, а в доках SQLAlchemy это прямо указано - Legacy. Вот ссылка: docs.sqlalchemy.org/en/13/orm/extensions/declarative/basic_use.html
@@RedEyedCoderClub Большое спасибо! Я открыл новую документацию, а там такое же объявление с этим declarative_base. Это просто перекочевавшее наследие они сохранили для тех, кто освоил предыдущую версию? Ютуб почему-то удаляет комментарии со ссылками, но вот после .орг статья en/14/orm/quickstart.html
Верное замечание. Прошу прощения тупанул. Я писал через создание класса SQLAlchemy() потому что использовал flask-sqlalchemy, а не SQLAlchemy напрямую. Если мы посмотрим в исходник класса SQLAlchemy(), то увидим как раз тот синтаксис о котором вы написали. github.com/pallets-eco/flask-sqlalchemy/blob/e5bf821072de0d55ff92891432004322864a7265/src/flask_sqlalchemy/__init__.py#L647 используется declarative_base(), только под капотом. SQLAlchemy можно использовать и без Flask/Django, а просто с обычными скриптами.
I use, but not in tutorials - additional explanations lengthen videos. Would you like a video about type hints? They are quite useful, especially when you read your old code, that you didn't touch 6 months, and just don't remember what it does.
@@RedEyedCoderClub I thought so, you're just simplifying sample codes. =) Yeah, I agree, it's a cool feature, but for me it feels like dynamically typed programming was a bad experiment and we're back to types. Same situation in JS and PHP. I think it's a good idea for a new video, because this feature gains popularity
Олег, здравствуйте! Прошу помощи, не могу понять, что не так, странная ошибка в самом объекте pagination. Это урок по фласку, создание пагинации. Почему на фласковском объекте Pagination такая ошибка? if q: posts = Post.query.filter(Post.title.contains(q) | Post.body.contains(q)) # .all() else: posts = Post.query.order_by(Post.created.desc()) pages = posts.paginate(page=page, per_page=5) print(pages) for i in pages.items(): print(i.title) File "/home/max/me/flask/app/posts/blueprint.py", line 58, in index for i in pages.items(): TypeError: 'list' object is not callable
Honestly, I did not expect that the lesson could be so simple and clear, even for me. Thanks for the great explanation
Thank you!
very-very clear and simple! I used before Visual studio code, in particular for the debug. Had a lot of problem.
IDLE+PDB is the best useful kit to debug Python modules!
Thanks
Thank you for the comment!
Honestly, I didn't expect the lesson to be so easy to understand, even for me. Thanks to the author for the video.
Thanks for watching, and for the comment!
I Love when TH-camrs make clear tutorials! Awesome work! keep it up!
Thank you very much!
Very detailed and clear, thanks man
What video should I make next?
Follow me @:
Telegram: t.me/red_eyed_coder_club
Twitter: twitter.com/CoderEyed
Facebook: fb.me/redeyedcoderclub
maybe a tutorial like this th-cam.com/video/zm6WQRq4wYY/w-d-xo.html
Олег, запишите, пожалуйста, видео как производить миграции в базу данных, если модели были созданы не через db.model, а через Base = declarative_base().
Я попытался самостоятельно сделать модели этим способом, но для миграции требуется некая сущность "db" (flask db migrate), она же являлась экземплятом SQLAlchemy из flask_sqlalchemy.
А что делать в случае, когда этой db нет?
Если можно, то подскажите, пожалуйста, мне из этой ситуации выкрутиться )
Или то что я делаю это извращение, и если дано использовать flask_sqlalchemy, то его и надо использовать?
Миграции делаются с помощью flask-migrate, который в свою очередь основан на alembic. Его (flask-migrate) нужно установить отдельно и настроить соответственно.
Мне кажется, что проще переопредилить экземпляр SQLAlchemy через flask-sqlalchemy. При этом не так уж много нужно делать, да и имеющаяся база данных не будет затронута.
Awesome video! Easy to follow, only the essential information. Thanks
Thank you!
You're as legendary as Pink Floyd, so knowledgeable about Python.
Thank you! But I can't to be as legendary as Pink Floyd. Sad but true :D
@@RedEyedCoderClub damn as legendary as Metallica too!
Thank you :D
SUPER nice walkthough, thank you!
Thank you!
Good video tutorial on Python, thank you very much for your work.
Thank you!
A great debugging lesson turned out, thank you!
Thank you!
Now I know how to use PDB commands to debug Python code.
Thank you very much!
Python is a very powerful programming tool. It is worth studying and using in your work. And using debuggers will greatly simplify and improve the quality of work.
Thanks for comment!
Спасибо за познавательное видео!
Обычно пользуюсь PyCharm дебагом, где это и проще, и нагляднее, но давно интересовался, как работать напрямую через стандартную библиотеку (никак руки не доходили).
За студентов из группы Pink Floyd - моё почтение вдвойне)
:) Спасибо. Основное преимущество PDB - он всегда под рукой.
very good video
Thank you!
excellent thank you
Thanks for comment!
Олег, добрый вечер!
Очень рад, что снова нашёл вас на TH-cam, у вас очень интересные и, самое главное, понятные видеоуроки без лишней информации
Подскажите пожалуйста, есть ли вы в социальных сетях?
И есть ли возможность с вами иногда консультироваться по поводу языка Python?
Добрый день и спасибо.
Я есть кое-где, но сильно не уверен на счет консультаций. Если у вас есть вопросы - спрашивайте.
@@RedEyedCoderClub а вы больше не ведёте русскоязычный канал?
@@quickliker пока нет, если ситуация изменится, то я, наверное, вернусь. Были такие планы, но англоязычный канал показал лучшие результаты.
@@RedEyedCoderClub а будут ли у вас видео по парсингу? Или ваши, уже записанные уроки, не потеряли актуальность до сих пор? Хотелось бы побольше узнать о парсинге разных сайтов
Они актуальны и по сей день, но с учетом измений верстке сайтов. В остальном все работает прекрасно. Но я еще планировал делать видео по парсингу.
Олег, здравствуйте!
Смотрю ваш курс по Фласк на другом канале и нигде не могу найти ответ на вопрос.
Подскажите, пожалуйста, в чем разница между тем, как вы создавали модель для бд:
db = SQLAlchemy(app)
class Post(db.Model)...
и тем, что в интернете в статьях описывается:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Post(Base):
Это идентичные записи или есть какое-то отличие?
Очень тяжело разобраться, когда есть куча вариантов разных записей похожих действий)
Так писали еще при Царе-Горохе и при Николае II Кровавом. Это устаревший синтаксис, а в доках SQLAlchemy это прямо указано - Legacy. Вот ссылка:
docs.sqlalchemy.org/en/13/orm/extensions/declarative/basic_use.html
@@RedEyedCoderClub Большое спасибо!
Я открыл новую документацию, а там такое же объявление с этим declarative_base. Это просто перекочевавшее наследие они сохранили для тех, кто освоил предыдущую версию?
Ютуб почему-то удаляет комментарии со ссылками, но вот после .орг статья en/14/orm/quickstart.html
Верное замечание. Прошу прощения тупанул.
Я писал через создание класса SQLAlchemy() потому что использовал flask-sqlalchemy, а не SQLAlchemy напрямую.
Если мы посмотрим в исходник класса SQLAlchemy(), то увидим как раз тот синтаксис о котором вы написали.
github.com/pallets-eco/flask-sqlalchemy/blob/e5bf821072de0d55ff92891432004322864a7265/src/flask_sqlalchemy/__init__.py#L647
используется declarative_base(), только под капотом.
SQLAlchemy можно использовать и без Flask/Django, а просто с обычными скриптами.
coooool
Thank you!
Tnx!
Thank you for comment!
Don't you use type hints?
I use, but not in tutorials - additional explanations lengthen videos.
Would you like a video about type hints? They are quite useful, especially when you read your old code, that you didn't touch 6 months, and just don't remember what it does.
@@RedEyedCoderClub I thought so, you're just simplifying sample codes. =)
Yeah, I agree, it's a cool feature, but for me it feels like dynamically typed programming was a bad experiment and we're back to types. Same situation in JS and PHP.
I think it's a good idea for a new video, because this feature gains popularity
Ok, got it. And wrote your suggestion down :D
I'd like to watch something about type hints 🙂
Thanks for your suggestion! :D
power script
Thanks for comment!
Олег, здравствуйте!
Прошу помощи, не могу понять, что не так, странная ошибка в самом объекте pagination. Это урок по фласку, создание пагинации. Почему на фласковском объекте Pagination такая ошибка?
if q:
posts = Post.query.filter(Post.title.contains(q) | Post.body.contains(q)) # .all()
else:
posts = Post.query.order_by(Post.created.desc())
pages = posts.paginate(page=page, per_page=5)
print(pages)
for i in pages.items():
print(i.title)
File "/home/max/me/flask/app/posts/blueprint.py", line 58, in index
for i in pages.items():
TypeError: 'list' object is not callable
Потому что атрибут .items - это не метод, а свойство. Нужно убрать скобки и все должно работать нормально.