这是一个创建于 3565 天前的主题,其中的信息可能已经有所发展或是发生改变。
就拿这个例子来说。
------------------------------------------------------------------------
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
|
|
1
9hills 2015-01-18 13:55:38 +08:00 via iPhone 1
create_all的时候是建表的。schema你不是定义了User类么?
|
|
|
2
jamiesun 2015-01-18 16:00:25 +08:00 1
只是表不会创建数据库
|
|
|
3
dagger 2015-01-18 21:45:18 +08:00 1
class User(db.Model),写这句的时候,会反作用到db,接下来db.create_all()的时候就会创建对应的表结构了,不信的话你可以把这两句掉个个儿试试
|
|
|
4
shajiquan 2015-01-19 18:27:15 +08:00 1
会创建使用 `db.Model` 类的所有数据库表 schema。
不过,不推荐使用 flask-sqlalchemy,推荐使用纯 sqlalchemy,随意调用,在其他任何地方都可以。
|