书籍:《Flask Web开发:基于Python的Web应用开发实战》
作者代码地址:miguelgrinberg/flasky
Flask不限制使用何种类型的数据库包,书中使用Flask-SQLAlchemy 作为示范。Flask-SQLAlchemy是一个关系型数据库框架,支持多种数据库后台。数据库使用URL指定,格式如下:
MySQL: mysql://username:password@hostname/database
hostname表示MySQL所在的主机,database表示要使用的数据库名。
from flask.ext.sqlalchemy import SQLAlchemy
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)
和之前一样,使用app.config为flask的扩展提供全局变量和配置信息。
模型是指程序使用的持久化实体。ORM中模型是一个Python类,类中属性对应数据库表中的列。下面的例子定义了Role和User模型。
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
然后可以用各种相关的函数进行创建数据库,创建模型,修改行,删除行,查询行等操作。
更多文章与笔记请关注:微信公众号:二进制树