from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
db.create_all()
@app.route("/")
def index():
return "hello world"
if __name__ == "__main__":
app.run(debug=True)
< H2 > models.py < / H2 >
from db_demo3 import db
class Users(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(100), nullable=True)
telephone = db.Column(db.String(11))
< H2 > manage.py < / H2 >
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from db_demo3 import app, db
from models import Users
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command("db", MigrateCommand)
if __name__ == "__main__":
manager.run()
code as above, run
in turn from the command linepython manage.py db init
python manage.py db migrate
python manage.py db upgrade
No error was reported and the version file and database form were generated successfully
but after running python manage.py db migrate
again without any modification, the error was reported:
C:\Users\LKS00085\Python\learn flask\db_demo3>python manage.py db migrate
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
Traceback (most recent call last):
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 348, in
_revision_for_ident
revision = self._revision_map[resolved_id]
KeyError: 51
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
manager.run()
File "D:\Anaconda3\lib\site-packages\flask_script\__init__.py", line 417, in r
un
result = self.handle(argv[0], argv[1:])
File "D:\Anaconda3\lib\site-packages\flask_script\__init__.py", line 386, in h
andle
res = handle(*args, **config)
File "D:\Anaconda3\lib\site-packages\flask_script\commands.py", line 216, in _
_call__
return self.run(*args, **kwargs)
File "D:\Anaconda3\lib\site-packages\flask_migrate\__init__.py", line 197, in
migrate
version_path=version_path, rev_id=rev_id)
File "D:\Anaconda3\lib\site-packages\alembic\command.py", line 117, in revisio
n
script_directory.run_env()
File "D:\Anaconda3\lib\site-packages\alembic\script\base.py", line 416, in run
_env
util.load_python_file(self.dir, "env.py")
File "D:\Anaconda3\lib\site-packages\alembic\util\pyfiles.py", line 93, in loa
d_python_file
module = load_module_py(module_id, path)
File "D:\Anaconda3\lib\site-packages\alembic\util\compat.py", line 68, in load
_module_py
module_id, path).load_module(module_id)
File "<frozen importlib._bootstrap_external>", line 399, in _check_name_wrappe
r
File "<frozen importlib._bootstrap_external>", line 823, in load_module
File "<frozen importlib._bootstrap_external>", line 682, in load_module
File "<frozen importlib._bootstrap>", line 251, in _load_module_shim
File "<frozen importlib._bootstrap>", line 675, in _load
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "migrations\env.py", line 87, in <module>
run_migrations_online()
File "migrations\env.py", line 80, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "D:\Anaconda3\lib\site-packages\alembic\runtime\environment.py", line 807
, in run_migrations
self.get_context().run_migrations(**kw)
File "D:\Anaconda3\lib\site-packages\alembic\runtime\migration.py", line 312,
in run_migrations
for step in self._migrations_fn(heads, self):
File "D:\Anaconda3\lib\site-packages\alembic\command.py", line 97, in retrieve
_migrations
revision_context.run_autogenerate(rev, context)
File "D:\Anaconda3\lib\site-packages\alembic\autogenerate\api.py", line 369, i
n run_autogenerate
self._run_environment(rev, migration_context, True)
File "D:\Anaconda3\lib\site-packages\alembic\autogenerate\api.py", line 379, i
n _run_environment
if set(self.script_directory.get_revisions(rev)) != \
File "D:\Anaconda3\lib\site-packages\alembic\script\base.py", line 201, in get
_revisions
return self.revision_map.get_revisions(id_)
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 298, in
get_revisions
return sum([self.get_revisions(id_elem) for id_elem in id_], ())
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 298, in
<listcomp>
return sum([self.get_revisions(id_elem) for id_elem in id_], ())
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 303, in
get_revisions
for rev_id in resolved_id)
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 303, in
<genexpr>
for rev_id in resolved_id)
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 351, in
_revision_for_ident
revs = [x for x in self._revision_map
File "D:\Anaconda3\lib\site-packages\alembic\script\revision.py", line 352, in
<listcomp>
if x and x.startswith(resolved_id)]
TypeError: <flask_script.commands.Command object at 0x0000000004E44E80>: startsw
ith first arg must be str or a tuple of str, not int
just started to learn the flask framework, doing a project exercise, there is no solution to the relevant error report, please give me more advice, thank you!