⚗ Flask: подключаем БД, настраиваем SqlAlchemy

Sdílet
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/...

Komentáře • 66

  • @zerodrinkcool
    @zerodrinkcool Před 5 lety +21

    Великепная серия уроков!!! Я умоляю Вас не бросайте! Ждем следующее видео с нетерпением

  • @megamoose893
    @megamoose893 Před 6 lety +20

    Ждем следующий выпуск)

  • @TheSaymonFenix
    @TheSaymonFenix Před 5 lety +10

    Вот дошли руки до питона. Спасибо автору. Если будет ошибка psycopg2 - выполнить в терминале команду pip install psycopg2-binary
    из stackoverflow.com/a/49308720. db.create_all() создает все необходимые таблицы, но почему-то не создает саму базу, как уже писали здесь в комментах. Т.е. базу нужно предварительно создать руками. И еще ругается в логах на какой-то deprecation оверхед.

    • @user-kidsmedia
      @user-kidsmedia Před 4 lety +1

      А как её создать то?!

    • @TheSaymonFenix
      @TheSaymonFenix Před 4 lety

      @@user-kidsmedia Ну вообще CREATE DATABASE dbName WITH OWNER ownerName; Где dbName - это имя которое дается базе при создании, а ownerName - имя пользователя в постгресе, пароль которого известен (вроде по умолчанию идет postgres - postgres, но лучше создать нового). Но это все если использовать psql (погуглить можно че это). А вообще есть куча других путей взаимодействия (и создания в том числе) с СУБД. В энтерпрайз идее есть databse tool. Есть неплохая прога dbeaver. Или вообще можно использовать pgadmin. Часть из описанного относится исключительно к постгресу ивсе что непонятно - гуглится и пробуется

  • @insane128
    @insane128 Před 3 lety +3

    Ну что сказать ? Искал медь, а нашёл золото. Спасибо вам игромное, за это видео!!!!

  • @user-zi6dm2lk5n
    @user-zi6dm2lk5n Před 6 lety +4

    ЖДЕМ дальше

  • @user-tj7kc3rd4j
    @user-tj7kc3rd4j Před 6 lety +2

    Ну так то огонь, было бы интересно не только на спринг смотреть, но и на питон!

  • @tanganov
    @tanganov Před 4 lety +1

    Спасибо за проделанную работу. Жду еще материалов!

  • @Catt152
    @Catt152 Před 5 lety +2

    Спасибо за видео, ждем продолжения!

  • @pavl-2126
    @pavl-2126 Před 6 lety +8

    Когда новий урок?

  • @yuritomas3093
    @yuritomas3093 Před 5 lety +2

    sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: database "py_sweater" does not exist
    почему-то не срабатывает строчка db.create_all()
    В чем моя ошибка?

  • @ivanl7786
    @ivanl7786 Před rokem

    Здравствуйте! 00:05:04 - не пойму откуда взялось поле "tags" в 20-й строке кода, Вы его не описывали ведь.

  • @user-kidsmedia
    @user-kidsmedia Před 4 lety +2

    Все в комментах говорят что базу нужно сделать самому, а КАК ее сделать никто не написал

    • @Alex-bw8wr
      @Alex-bw8wr Před 4 lety

      Вторая ссылка в гугле create database имя_базы_данных;

  • @ivanl7786
    @ivanl7786 Před rokem

    00:03:55 - что за поле "message"? Если я создаю БД без Flask, то мне его тоже нужно создать или это "виртуальное" поле? Если да, то оно "появилось внезапно" и не понятно зачем оно нужно.

  • @anzy99829
    @anzy99829 Před 5 lety +1

    Хороший курс. Только название неправильное, лучше назвать "видео обзор документации по flask". Хочется увидеть нестандартные решения, костыли наконец-то... а то слишком легко.

    • @ElChampi0
      @ElChampi0 Před 2 lety

      о, костыли, это прям про пайтон, прям в точку

  • @artr747
    @artr747 Před 5 lety

    очень ждем

  • @go5190
    @go5190 Před 5 lety

    Продолжения будет? Жду с нетерпением :)

  • @insidertrading2001
    @insidertrading2001 Před 3 lety +1

    Почему нет уроков на ютубе как работать с MySql и как перенести уже созданную базу данных(например в MySQL Workbench) в проект.

    • @ElChampi0
      @ElChampi0 Před 2 lety +1

      потому что mysql шляпа

  • @valeriiz5930
    @valeriiz5930 Před 5 lety

    Спасибо за видео.
    Базу создал, но записи в неё не добавляются. В проекте выводятся, но на диске пусто.
    Перезапустил проект - пусто. Записей нет. Словно записи пишутся в какой-то временный кэш, а не в базу.

  • @user-zi6dm2lk5n
    @user-zi6dm2lk5n Před 5 lety

    ждем

  • @shahanemakiyan
    @shahanemakiyan Před 4 lety

    спасибо!!!

  • @Anshegar
    @Anshegar Před 5 lety +1

    Что значит передавать мэп если конструктом мы не определели, ничерта не понял почему именно так). Что такое мэп в понимании автора вообще непонятно, ссылочку может кто скинуть почитать, что имел ввиду автор ролика?
    З.Ы. Автору огромное спасибо за сам ролик, не все понятно, но надеюсь помогут разобраться с териминами и почему надо было писать именнотак строчку Tag(text = tag.strip()), вообще непонял эту строку определения в конструкторе( хотя все заработало нормально).

    • @boobubuo
      @boobubuo Před 4 lety

      да .. автор галопом по европам .. и даже если не галопом .. походу это специфика алхеми .. оно создает какуюто ниибически замудреную виртуальную невидимую переменную и ебпитесь как хотите .. очевидность .. исчезла .. появилось как в документациии "догадка" ! тоесть алхеми догадаться должно !!! что там в коде ..

  • @andrewnovoselcev9966
    @andrewnovoselcev9966 Před 5 lety

    Сделал все как в видео, только создал свою таблицу User, добавил в нее пользователей и сделал вывод с помощью User.query.all() на html страницу, по идеи он должен выдать данные виде списка [,] но получается [, ], то есть выводит их id. не могу понять почему...подскажите в чем может быть проблема, зарание благодарен.

  • @fet4n
    @fet4n Před rokem +2

    У кого не работает create_all() и пишет ошибку RuntimeError: Working outside of application context.
    Замените db.create all() на
    with app.app_context():
    db.create_all()

  • @user-zi6dm2lk5n
    @user-zi6dm2lk5n Před 5 lety

    ждеммм

  • @user-kidsmedia
    @user-kidsmedia Před 4 lety +1

    Помогите пожалуйста!!!!!! когда включаю код получаю ошибку:
    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?
    Вряд ли произошла ошибка в коде, потомучто я скопировал его с гит хаба, ссылку на который в описании

    • @letsCodeDru
      @letsCodeDru  Před 4 lety

      А постгрес установлен на компьютер?

  • @manatoly694
    @manatoly694 Před 5 lety

    {% for message in messages %}
    {{ message.text }}
    {% for tag in message.tags %}
    #{{ tag.text }}
    {% endfor %}
    {% endfor %}
    не выводит тэг,только текст,подскажите в каком блоке может быть ошибка

  • @mrpontmercy8906
    @mrpontmercy8906 Před 4 lety

    А может кто-то подсказать, зачем мы определяем поле message в классе Message?

  • @Andrei_Kozlov
    @Andrei_Kozlov Před 5 lety

    Столкнулся с проблемой: авторизация пользователя в базе данных
    помогла статья: 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

    • @Andrei_Kozlov
      @Andrei_Kozlov Před 5 lety

      Целый день потратил на решение данной проблемы

  • @yarko6734
    @yarko6734 Před 2 lety

    Правильно я понимаю написав приложение на Flask c подключением через SqlAlchemy к БД SQlite мы можем потом заменить БД на какую то другую не пререписывая основной код приложения?

    • @letsCodeDru
      @letsCodeDru  Před 2 lety +1

      с большой долей вероятности можно, да. Зависит от того, что от конкретной БД ты используешь. Например json поля

  • @k1b3rP4nk
    @k1b3rP4nk Před 5 lety

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

  • @user-jm5zb6sl4h
    @user-jm5zb6sl4h Před 4 lety

    Автору спасибо, интересно что за редактор?

  • @alexb1328
    @alexb1328 Před 6 lety +1

    VIdeo pro sozdanie bazi dannix please!!!

  • @user-uq2nl9bt8b
    @user-uq2nl9bt8b Před 5 lety

    Когда следующий выпуск?

  • @devZu9
    @devZu9 Před 5 lety

    Когда следующие уроки по фласку?

  • @user-ix9ow9hv4z
    @user-ix9ow9hv4z Před 5 lety

    c postgress объясните. не понимаю, почему не подрубается бд :(

    • @Anshegar
      @Anshegar Před 5 lety

      У меня с 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)

  • @iamfebo6290
    @iamfebo6290 Před 5 lety +1

    будет ли продолжение?

    • @letsCodeDru
      @letsCodeDru  Před 5 lety +1

      Да.на работе python до задницы, в нерабочее время очень лениво его ковырять, хотца разнообразия :) Но я сильный, я справлюсь и запилю продолжение. Надеюсь в течении недели-двух запилить :)

    • @irinagolub1046
      @irinagolub1046 Před 5 lety

      @@letsCodeDru Ждём, ждём-с. Но просто обещаниями сыты не будем.

  • @erwererwrwr
    @erwererwrwr Před 5 lety

    автор, подскажи, пожалуйста, для дураков с фронтенда: чтобы код из видео заработал, необходимо ведь предварительно скачать postgresql, задать ему пароль (напр 123, как в видео), имя, запустить и т.д Чтобы таки код из видео заработал, правильно?

    • @letsCodeDru
      @letsCodeDru  Před 5 lety

      Вот не надо тут про дураков. Фронтэндеры - нормальные ребята. А БД надо ставить, да

    • @irinagolub1046
      @irinagolub1046 Před 5 lety

      Посмотрите, может здесь что полезное найдете: bit.ly/2Lmydrm

  • @user-xl2tf4gq1g
    @user-xl2tf4gq1g Před 5 lety +1

    где продолжение?!

    • @letsCodeDru
      @letsCodeDru  Před 5 lety +3

      На подходе)

    • @user-xl2tf4gq1g
      @user-xl2tf4gq1g Před 5 lety

      @@letsCodeDru жду)

    • @maharadg
      @maharadg Před 5 lety +1

      @@letsCodeDru Да, таки ждем. Я даже решил с flask начать а не с django

    • @TheMultiland
      @TheMultiland Před 5 lety

      @@maharadg Джанго посложнее на мой взгляд

  • @Evgeniy_12
    @Evgeniy_12 Před 4 lety

    Жалко, 4-ое видео с ограниченным доступом :(

    • @letsCodeDru
      @letsCodeDru  Před 4 lety

      Я его ещё просто недооформил. На днях будет

    • @Evgeniy_12
      @Evgeniy_12 Před 4 lety

      @@letsCodeDru ждем с нетерпением ;)

  • @elssao6251
    @elssao6251 Před 5 lety

    #letsCode, а про flask забыли ?

    • @letsCodeDru
      @letsCodeDru  Před 5 lety +1

      Нет. Меня джависты взяли в заложники. Но я уже рою подкоп в сторону python. :)

  • @user-fs9ff4ng2h
    @user-fs9ff4ng2h Před 3 lety

    Мне кто нибудь ответит почему автор прописывает постгрес , если он использует sqlalchemy (1:05) ? Сорян если тупой вопрос

  • @edwardfuchs9461
    @edwardfuchs9461 Před 5 lety +1

    Когда новый видос?

  • @SleepMashine
    @SleepMashine Před 9 měsíci

    муде наснимал бл