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
skyduy
V2EX  ›  Python

Flask-SQLAlchemy 在 db.create_all()的时候创建的到底是什么?

  •  
  •   skyduy ·
    skyduy · 2015-01-18 12:57:25 +08:00 · 8879 次点击
    这是一个创建于 3595 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就拿这个例子来说。
    ------------------------------------------------------------------------
    from flask import Flask
    from flask.ext.sqlalchemy import SQLAlchemy
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
    db = SQLAlchemy(app)

    class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    def __init__(self, username, email):
    self.username = username

    db.create_all()

    admin = User('admin')
    db.session.add(admin)
    db.session.commit()
    ------------------------------------------------------------------------
    不清楚在create_all()的时候是在指定位置创建了一个空的文件test.db,还是同时定义好了结构。

    如果是定义好了结构,说不通啊,在create_all()之前根本就没有提及任何结构啊,只配置了一下它的路径。

    如果test.db是空文件的话,那不就可以自己手动创建,手动移植了?内容不也就可以随便添加了?那结构不就会很乱吗?尤其在一些大型应用中,利用上下文,各种结构直接往一个db里面存储,维护起来不是很难吗?

    难道真的是即用即插?!
    4 条回复    2015-01-19 18:27:15 +08:00
    9hills
        1
    9hills  
       2015-01-18 13:55:38 +08:00 via iPhone   ❤️ 1
    create_all的时候是建表的。schema你不是定义了User类么?
    jamiesun
        2
    jamiesun  
       2015-01-18 16:00:25 +08:00   ❤️ 1
    只是表不会创建数据库
    dagger
        3
    dagger  
       2015-01-18 21:45:18 +08:00   ❤️ 1
    class User(db.Model),写这句的时候,会反作用到db,接下来db.create_all()的时候就会创建对应的表结构了,不信的话你可以把这两句掉个个儿试试
    shajiquan
        4
    shajiquan  
       2015-01-19 18:27:15 +08:00   ❤️ 1
    会创建使用 `db.Model` 类的所有数据库表 schema。

    不过,不推荐使用 flask-sqlalchemy,推荐使用纯 sqlalchemy,随意调用,在其他任何地方都可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1797 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:29 · PVG 00:29 · LAX 08:29 · JFK 11:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.