Python Flask script 使用

我们在利用Python 的Flask框架搭建web服务器的时候,需要创建数据库。我们有多种方法创建数据库:1.直接执行SQL语句创建 2.利用Python的命令行创建。
第一种方法创建的时候,需要手动创建表的结构,如果表的结构简单,表的数量少,这样做也可以。但是当表的数量很多,结构复杂之后就有些麻烦了。另外如果表的结构发生了变化,还需要手动去更改,这样工作量就更大了。
在Python中为方便数据库的操作,引入了ORM模型 SQLAlchemy,我们可以利用ORM的结构去创建表,不需要手动的创建表的结构,只需要执行几行简单的命令就可以创建表了。
但是问题来了,要利用ORM 就必须引入SQLAlchemy创建的db对象,这个db对象在程序中创建,我们如何在Python命令行中使用呢?答案就是使用Python script。
Python script 中的Manager模块可以让我们以命令行的形式运行程序,然后得到程序中SQLAlchemy创建的db对象。
假如我们需要创建两张表,一张是描述用户信息的user表,包含用户id和用户名,另一张是描述用户职位的role表包含职位id和职位名称。那么我们利用ORM模型创建数据表的代码如下:

# manage.py
import os
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.script import Manager
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
manager = Manager(app)
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    def __repr__(self):
        return '<Role %r>' % self.name
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    def __repr__(self):
        return '<User %r>' % self.username
if __name__ == '__main__':
    manager.run()

在Linux下 执行 python manage.py shell 进入Python的shell,然后执行from manage import db db.create_all() 就可以创建数据库了 。

python manage.py shell  
from manage import db
db.create_all()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值