flask 不能新建 table - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lbfeng
V2EX    Python

flask 不能新建 table

  •  
  •   lbfeng 2015-07-04 04:37:53 +08:00 4532 次点击
    这是一个创建于 3822 天前的主题,其中的信息可能已经有所发展或是发生改变。

    flask新人一枚。正在读flask web development。今天尝试在flasky上添加新的功能。第一步在models中添加了几个table,接着用db upgrade生成数据库,在shell里操作models里原有的table没有问题,我添加的table却在数据库里找不到(OperationalError: (OperationalError) no such table)。有可能是什么原因呢?请大家指点。

    15 条回复    2015-07-04 21:31:33 +08:00
    Septembers
        1
    Septembers  
       2015-07-04 04:52:19 +08:00
    0. 建议从0开始 看看Flask官方手册 再看Flask Web Development
    1. Flask并不包含ORM
    2. flasky使用的ORM是SQLAlchemy因此这个问题与Flask无关
      see https://github.com/miguelgrinberg/flasky/blob/master/app/__init__.py#L13
    lbfeng
        2
    lbfeng  
    OP
       2015-07-04 05:50:50 +08:00   1
    @Septembers 谢谢建议。问题解决了。这本书已经自学了一半了。再从0开始效率有点低了。书中的主要构架基本都能理解,但有些没搞明白。这回问题出在migration。我以为在models中添加新的table之后直接upgrade就可以,没有重新生成migration script,导致数据库中没有新的table。
    ca1n
        3
    ca1n  
       2015-07-04 09:56:00 +08:00
    flask-sqlalchemy 创建class继承Model.db之后要create_all才行嘛
    ericls
        4
    ericls  
       2015-07-04 10:26:05 +08:00 via Android
    跟flask无关吧
    loading
        5
    loading  
       2015-07-04 10:34:34 +08:00 via Android
    一直认为在初学时居然用 sqlalchemy 的 flasky就是大问题。
    不知道flasky 的人是怎么想的,也许是为了更好地提高安全性吧。(不知不觉就安全了,orm帮的忙。)
    然后初学者写别的应用时,由于没认证看 flask文档说到的安全细节…在同一个服务器下写了一个筛子程序,都是洞…
    lbfeng
        6
    lbfeng  
    OP
       2015-07-04 11:16:11 +08:00
    @ca1n 我当时用的是db upgrade
    ca1n
        7
    ca1n  
       2015-07-04 11:22:11 +08:00
    @lbfeng db就没有upgrade吧...
    sinux
        8
    sinux  
       2015-07-04 11:55:24 +08:00
    @ca1n flask-sqlalchemy的 migrate和upgrade 大概就等于django的 makemigrations 和migrate
    lbfeng
        9
    lbfeng  
    OP
       2015-07-04 13:19:35 +08:00
    @ca1n Flask applications can use the Flask- Migrate extension, a lightweight Alembic wrapper that integrates with Flask-Script to provide all operations through Flask-Script commands.
    @sinux A database migration framework keeps track of changes to a database schema, and then incremental changes can be applied to the database. migration让我比较困惑,按我理解只需要生成migration script一次,之后models有变动只需db upgrade。
    sinux
        10
    sinux  
       2015-07-04 13:43:38 +08:00
    @lbfeng models变动了,你直接upgrade,migrations文件夹内的版本,没有任何变动,所以执行的还是上一次的版本,当然就不会创建table。
    luzjoy
        11
    luzjoy  
       2015-07-04 16:28:31 +08:00
    先执行 db migrate -m 'xxx' 再执行 migrate upgrade
    ca1n
        12
    ca1n  
       2015-07-04 16:29:48 +08:00
    @sinux mirate这个库到底是做什么的 有什么优点么...感觉db的操作sqlalchemy本身就已经很简单了
    sinux
        13
    sinux  
       2015-07-04 16:40:07 +08:00
    @ca1n create_all这个api直接就创建所有的表了,不告诉你哪变了啊,migrate基于Alembic,把所有的迁移或者说数据库改动吧,都按版本记录下来了啊,你可以回溯你可以修改,像git一样,跳到某一个版本去都是可以的。
    ca1n
        14
    ca1n  
       2015-07-04 16:49:17 +08:00
    @sinux 恩..这么一说确实挺方便的 thx
    lbfeng
        15
    lbfeng  
    OP
       2015-07-04 21:31:33 +08:00
    @sinux 是的,我是在upgrade执行过程中发现没有新table的操作才反应过来。
    @luzjoy xxx 每次都要不一样吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2537 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:04 PVG 23:04 LAX 07:04 JFK 10:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86