Because my laptop is gone I use my old Linux.
First you need to install these python modules with --user argument for Linux:
[mythcat@desk my_flask]$ pip3 install flask-migrate --user
...
[mythcat@desk my_flask]$ pip3 install flask-script --user
Let's test this new issue with server.py file by adding these python modules:#migrate
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
...
# create migrate object with db
migrate = Migrate(app, db)
# create manager
manager = Manager(app)
# create db command for manager
manager.add_command('db', MigrateCommand)
...
# add new columns into database
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
gender = db.Column(db.String(5), unique=True)
work = db.Column(db.String(33), unique=True)
city = db.Column(db.String(15), unique=True)
...
# the default name main
if __name__ == '__main__':
manager.run()
app.run(debug=True)
Let's fix this migrate issue with the new command:[mythcat@desk my_flask]$ python3 server.py db init
Creating directory /home/mythcat/project_github/my_flask/migrations ... done
Creating directory /home/mythcat/project_github/my_flask/migrations/versions ... done
Generating /home/mythcat/project_github/my_flask/migrations/script.py.mako ... done
Generating /home/mythcat/project_github/my_flask/migrations/env.py ... done
Generating /home/mythcat/project_github/my_flask/migrations/alembic.ini ... done
Generating /home/mythcat/project_github/my_flask/migrations/README ... done
Please edit configuration/connection/logging settings in '/home/mythcat/project_github/my_flask/migrations
/alembic.ini'
before proceeding.
[mythcat@desk my_flask]$ python3 server.py db migrate
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added column 'user.city'
INFO [alembic.autogenerate.compare] Detected added column 'user.gender'
INFO [alembic.autogenerate.compare] Detected added column 'user.work'
INFO [alembic.autogenerate.compare] Detected added unique constraint 'None' on '['city']'
INFO [alembic.autogenerate.compare] Detected added unique constraint 'None' on '['gender']'
INFO [alembic.autogenerate.compare] Detected added unique constraint 'None' on '['work']'
Generating /home/mythcat/project_github/my_flask/migrations/versions/ca70c42b5b7a_.py ... done
[mythcat@desk my_flask]$ python3 server.py db upgrade
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> ca70c42b5b7a, empty message
ERROR [root] Error: No support for ALTER of constraints in SQLite dialect
The database fiels is changed by this command.Let's see with sqlite3 tool:
[mythcat@desk my_flask]$ sqlite3 server.sqlite
SQLite version 3.26.0 2018-12-01 12:34:55
Enter ".help" for usage hints.
sqlite> .tables
alembic_version user
sqlite> .schema user
CREATE TABLE user (
id INTEGER NOT NULL,
username VARCHAR(80),
email VARCHAR(120), city VARCHAR(15), gender VARCHAR(5), work VARCHAR(33),
PRIMARY KEY (id),
UNIQUE (username),
UNIQUE (email)
);
You can see my source code here.