⚗ Flask: подключаем БД, настраиваем SqlAlchemy
Vložit
- čas přidán 5. 09. 2024
- ЕСЛИ ВОЗНИКЛИ ОШИБКИ читаем описание 👇
Добавляем в наше Python Flask приложение поддержку базы данных для хранения пользовательского ввода. Для этого нам лучше вcего подойдёт ORM (Object-Relational Mapping) фреймворк SqlAlchemy, создающий прослойку между БД и нашим кодом. Это позволит отвлечься от низкоуровневых проблем получения и сохранения данных из БД.
ОШИБКИ правим так:
как верно заметили в комментах, я забыл установить psycopg2-binary библиотеку, которая нужна для взаимодействия с БД Postgres. Установить можно командой pip install psycopg2 (не забудьте зафризить зависимости)
Естественно, у вас должна быть установлена БД Postgres, установлен пароль для пользователя postgres и создана база данных (у меня это py_sweater)
Код из видео:
github.com/dru...
Для установки flask-slqalchemy нужно открыть консоль и перейти в директорию с проектом, после чего ввести 2 команды:
для установки пакета:
pip install flask-sqlalchemy
для фиксации зависимостей:
pip freeze < requirements.txt
Документация по flask-slqalchemy:
flask-sqlalchem...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Твиттер: / letscodedru
➡ Чат в Discord: / discord
➡ Группа Вконтакте: letscod...
➡ Канал в Telegram: t.me/letsCode_dru
➡ Чат в Telegram: t.me/joinchat/...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Поддержать проект:
➡ Patreon / letscodedru
➡ Яндекс.Деньги money.yandex.r...
➡ PayPal paypal.me/letscodedru
➡ Qiwi qiwi.me/letscode
➡ WebMoney/BitCoin funding.webmon...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Ссылка на канал: / @letscodedru
➡ Ссылка на Яндекс.Дзен: zen.yandex.ru/...
Великепная серия уроков!!! Я умоляю Вас не бросайте! Ждем следующее видео с нетерпением
Ждем следующий выпуск)
Вот дошли руки до питона. Спасибо автору. Если будет ошибка psycopg2 - выполнить в терминале команду pip install psycopg2-binary
из stackoverflow.com/a/49308720. db.create_all() создает все необходимые таблицы, но почему-то не создает саму базу, как уже писали здесь в комментах. Т.е. базу нужно предварительно создать руками. И еще ругается в логах на какой-то deprecation оверхед.
А как её создать то?!
@@user-kidsmedia Ну вообще CREATE DATABASE dbName WITH OWNER ownerName; Где dbName - это имя которое дается базе при создании, а ownerName - имя пользователя в постгресе, пароль которого известен (вроде по умолчанию идет postgres - postgres, но лучше создать нового). Но это все если использовать psql (погуглить можно че это). А вообще есть куча других путей взаимодействия (и создания в том числе) с СУБД. В энтерпрайз идее есть databse tool. Есть неплохая прога dbeaver. Или вообще можно использовать pgadmin. Часть из описанного относится исключительно к постгресу ивсе что непонятно - гуглится и пробуется
Ну что сказать ? Искал медь, а нашёл золото. Спасибо вам игромное, за это видео!!!!
ЖДЕМ дальше
Ну так то огонь, было бы интересно не только на спринг смотреть, но и на питон!
Спасибо за проделанную работу. Жду еще материалов!
Спасибо за видео, ждем продолжения!
Когда новий урок?
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: database "py_sweater" does not exist
почему-то не срабатывает строчка db.create_all()
В чем моя ошибка?
Здравствуйте! 00:05:04 - не пойму откуда взялось поле "tags" в 20-й строке кода, Вы его не описывали ведь.
Все в комментах говорят что базу нужно сделать самому, а КАК ее сделать никто не написал
Вторая ссылка в гугле create database имя_базы_данных;
00:03:55 - что за поле "message"? Если я создаю БД без Flask, то мне его тоже нужно создать или это "виртуальное" поле? Если да, то оно "появилось внезапно" и не понятно зачем оно нужно.
Хороший курс. Только название неправильное, лучше назвать "видео обзор документации по flask". Хочется увидеть нестандартные решения, костыли наконец-то... а то слишком легко.
о, костыли, это прям про пайтон, прям в точку
очень ждем
Продолжения будет? Жду с нетерпением :)
Будет. Скоро
Почему нет уроков на ютубе как работать с MySql и как перенести уже созданную базу данных(например в MySQL Workbench) в проект.
потому что mysql шляпа
Спасибо за видео.
Базу создал, но записи в неё не добавляются. В проекте выводятся, но на диске пусто.
Перезапустил проект - пусто. Записей нет. Словно записи пишутся в какой-то временный кэш, а не в базу.
ждем
спасибо!!!
Что значит передавать мэп если конструктом мы не определели, ничерта не понял почему именно так). Что такое мэп в понимании автора вообще непонятно, ссылочку может кто скинуть почитать, что имел ввиду автор ролика?
З.Ы. Автору огромное спасибо за сам ролик, не все понятно, но надеюсь помогут разобраться с териминами и почему надо было писать именнотак строчку Tag(text = tag.strip()), вообще непонял эту строку определения в конструкторе( хотя все заработало нормально).
да .. автор галопом по европам .. и даже если не галопом .. походу это специфика алхеми .. оно создает какуюто ниибически замудреную виртуальную невидимую переменную и ебпитесь как хотите .. очевидность .. исчезла .. появилось как в документациии "догадка" ! тоесть алхеми догадаться должно !!! что там в коде ..
Сделал все как в видео, только создал свою таблицу User, добавил в нее пользователей и сделал вывод с помощью User.query.all() на html страницу, по идеи он должен выдать данные виде списка [,] но получается [, ], то есть выводит их id. не могу понять почему...подскажите в чем может быть проблема, зарание благодарен.
У кого не работает create_all() и пишет ошибку RuntimeError: Working outside of application context.
Замените db.create all() на
with app.app_context():
db.create_all()
Ты лучший)
ждеммм
Помогите пожалуйста!!!!!! когда включаю код получаю ошибку:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
Вряд ли произошла ошибка в коде, потомучто я скопировал его с гит хаба, ссылку на который в описании
А постгрес установлен на компьютер?
{% for message in messages %}
{{ message.text }}
{% for tag in message.tags %}
#{{ tag.text }}
{% endfor %}
{% endfor %}
не выводит тэг,только текст,подскажите в каком блоке может быть ошибка
А может кто-то подсказать, зачем мы определяем поле message в классе Message?
Столкнулся с проблемой: авторизация пользователя в базе данных
помогла статья: help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/postgresql
что именно поправил что бы все начало работать:
Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf.
Найдите строку #listen_addresses = 'localhost' и убрать #
После настройки пароля, измените файл /etc/postgresql/8.4/main/pg_hba.conf на использование MD5 аутентификации для пользователя postgres:
local all postgres md5
Целый день потратил на решение данной проблемы
Правильно я понимаю написав приложение на Flask c подключением через SqlAlchemy к БД SQlite мы можем потом заменить БД на какую то другую не пререписывая основной код приложения?
с большой долей вероятности можно, да. Зависит от того, что от конкретной БД ты используешь. Например json поля
блин я не могу воспринимать массив как коллекцию, а именованный массив как то другим названием. просто вынос мозга. хотя в остальном все нормально.
Автору спасибо, интересно что за редактор?
VIdeo pro sozdanie bazi dannix please!!!
Когда следующий выпуск?
Когда следующие уроки по фласку?
c postgress объясните. не понимаю, почему не подрубается бд :(
У меня с MSSQL бла такая беда, оказывается бывает что драйвер к БД не цепляет и приходится через URLIB его подключать, вот как я поправил ( драйвера для postgres поищи сам. они есть в документации к алкеми)
conn = urllib.parse.quote_plus("DRIVER={SQL Server};SERVER=DESKTOP-RN1L0M2\SQLEXPRESS;DATABASE=test;")
app.config['SQLALCHEMY_DATABASE_URI']="mssql+pyodbc:///?odbc_connect=%s" %conn
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" %conn)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
будет ли продолжение?
Да.на работе python до задницы, в нерабочее время очень лениво его ковырять, хотца разнообразия :) Но я сильный, я справлюсь и запилю продолжение. Надеюсь в течении недели-двух запилить :)
@@letsCodeDru Ждём, ждём-с. Но просто обещаниями сыты не будем.
автор, подскажи, пожалуйста, для дураков с фронтенда: чтобы код из видео заработал, необходимо ведь предварительно скачать postgresql, задать ему пароль (напр 123, как в видео), имя, запустить и т.д Чтобы таки код из видео заработал, правильно?
Вот не надо тут про дураков. Фронтэндеры - нормальные ребята. А БД надо ставить, да
Посмотрите, может здесь что полезное найдете: bit.ly/2Lmydrm
где продолжение?!
На подходе)
@@letsCodeDru жду)
@@letsCodeDru Да, таки ждем. Я даже решил с flask начать а не с django
@@maharadg Джанго посложнее на мой взгляд
Жалко, 4-ое видео с ограниченным доступом :(
Я его ещё просто недооформил. На днях будет
@@letsCodeDru ждем с нетерпением ;)
#letsCode, а про flask забыли ?
Нет. Меня джависты взяли в заложники. Но я уже рою подкоп в сторону python. :)
Мне кто нибудь ответит почему автор прописывает постгрес , если он использует sqlalchemy (1:05) ? Сорян если тупой вопрос
Когда новый видос?
муде наснимал бл