Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Flask-Migrate объясните, пожалуйста, как работает [RSS Feed]

#1 Сен. 13, 2016 12:03:17

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

что такое миграции и зачем я знаю. Что такое базы данных тоже.
и даже могу создать/обновить базу при помощи SQLAlchemy, flask-sqlalchemy, и даже просто средствами питона,

а вот как запустить flask-migrate, чтоб работало - это я понять не могу, в документации как обычно - мутно написано и без реально работающего примера - кусок кода - а к чему его прикручивать??
Читаю и не могу понять:
http://flask-migrate.readthedocs.io/en/latest/
https://github.com/miguelgrinberg/flask-migrate/
(дело происходит под win, еще есть Ubuntu с debian, но нужно запустить под win)
============ начало их примера ==========
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config = ‘sqlite//app.db’
app.config = True # new


db = SQLAlchemy(app)
migrate = Migrate(app, db)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))

============ конец их примера ==========

сделал батничек:
set FLASK_APP=hello @REM допустим, что файл выше это hello.py
set FLASK_DEBUG=1
flask db init

Батник отработал не в этом окне, ну ладно, вручную сделал set-ы
если у меня hello, то это как бы hello.py, лежащий рядом?
он его не видит, а если делать через структуру app.py,
то я не понимаю куда пихать этот код.

да и просто flask db init (с запуском и путями все хорошо)
Во первых я не понимаю, кто (из установленных пакетов) собрал этот flask.exe (в scripts)
Во вторых, что же этот flask.exe делает, и как ему сказать про файл выше.




Офлайн

#2 Сен. 13, 2016 12:12:36

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

Migrate не использую, потому как не хочу привязываться с Flask_alchemy моделям. Использую чистый alembic, поверх которого работает flask-migrate.

Офлайн

#3 Сен. 13, 2016 12:38:27

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

ага, т.е. я не с того конца кинулся.
Спасибо, пойду переваривать alembic

Но, я к тому, что вот в django очень приятно (в последние времена) делать python manage.py migrate, да, не супер навороченный SQL, но зато сразу, вот тут бы (во Flask-е) так же.

Вообще, я еще плохо SQLAlchemy знаю, там миграции можно из командной строки или как-то так с кодом по минимуму делать - чтобы оно считало структуру бд и изменило?

а другие ОРМ (наприм. pywee) могут делать миграции?


Офлайн

#4 Сен. 13, 2016 13:03:36

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

Во фласке так же. Нужно просто настроить менеджера и все Просто я не люблю flask-sqlalchemy…

Офлайн

#5 Сен. 14, 2016 13:17:06

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

Koala
в документации рабочий кусок кода

создаешь файл manage.py
в нем делаешь

 from flask.ext.migrate import Migrate, MigrateCommand
from app import app, db
Migrate(app, db)
manager = Manager(app)
manager.add_command("db", MigrateCommand)
if __name__ == '__main__':
    manager.run()

запускаешь
 python manage.py db init

Отредактировано sander (Сен. 14, 2016 13:44:29)

Офлайн

#6 Сен. 14, 2016 21:14:13

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

в-общем все получилось и даже понялось.

спасибо, правда уже from flask_migrate …
да и from flask_script надо.

н-да, чтобы все это понять, пришлось сначала разобраться как работает SQLAlchemy-migrate,
потом пойти на “часть 2” из доки по Flask-Migrate (с flask_script и manage.py), которая неожиданно заработала.

а в том, что у меня не получалось, оказался дурацкий глюк документации:
http://flask-migrate.readthedocs.io/en/latest/

пример рабочий, дело в другом (см. ниже)

 #
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config = sqlite///app.db
app.config = True # new
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))

Например, этот файл что выше, назовем hello.py

вот засада:
я пишу вот так:
set FLASK_APP=hello @REM допустим, что файл выше это hello.py

и радостно думаю, что это hello и есть hello.py, а надо было писать
вот так:
set FLASK_APP=hello.py

теперь заработало и так (flask db init и прочее)
=====================================
Если бы в документации внятно назвали этот файл примера.
А про set я вообще узнал, лишь запустив flask.exe без параметров.
в документации про это - ни гугу.
Но, ладно-ладно, спасибо, что вообще она есть.
=====================================
сколько времени жизни тратится зря на такую чушь.


Отредактировано Koala (Сен. 14, 2016 21:17:48)

Офлайн

#7 Сен. 14, 2016 21:25:24

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

SQLAlchemy-migrate
Да никак оно не работает Патчит алембик, а потом использует его команды…

Офлайн

#8 Сен. 14, 2016 21:29:34

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask-Migrate объясните, пожалуйста, как работает

Koala
вызываю напрямую
python manage.py db …

+ у меня, практически во всех проектах, в manage.py еще менеджеры команд добавляются

Отредактировано sander (Сен. 14, 2016 21:33:17)

Офлайн

  • Начало
  • » Web
  • » Flask-Migrate объясните, пожалуйста, как работает [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version