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)
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))
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()
代碼如上,通過(guò)命令行依次運(yùn)行
python manage.py db init
python manage.py db migrate
python manage.py db upgrade
無(wú)報(bào)錯(cuò)并成功生成版本文件和數(shù)據(jù)庫(kù)表單
但是在不做任何修改再一次運(yùn)行python manage.py db migrate
后報(bào)錯(cuò):
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
剛開(kāi)始學(xué)flask框架,在做一個(gè)項(xiàng)目練習(xí),完全搜不到相關(guān)報(bào)錯(cuò)的解決方法,各位請(qǐng)多指教,謝謝!
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。