FLASK-SQLAlchemy是flask中一个数据库管理类框架,它封装了对大部分数据库的支持,包括关系型数据库Mysql/Postgres/SQLlite,以及Redis/MongoDB等非关系型数据库,通过SQLAlchemy,我们可以不用再关心SQL语句的使用,只需进行将数据库建模,并像管理一个类对象一样管理数据库即可.
我们先进行数据库的建模,所谓建模就是创建一个类,那建模之前,我们先进行准备工作-引入相关SQLAlchemy库,创建SQLAlchemy对象等等.
from flask_sqlalchemy import SQLAlchemy
import os
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)
第一行引入SQLAlchemy模块,第二行和第三行引入os模块,然后找到当前文件所在的绝对地址,第五行是在app的config中加入数据库的链接信息,我们现在链接的时SQLite数据库,我们可以通过改变app.config['SQLALCHEMY_DATABASE_URI']的值来链接不同的数据库,常用的数据库链接如下表:
数据库引擎 URL
MySql mysql://username:password@hostname/database
Postgres postgresql://username:password@hostname/database
SQLite(Unix) sqlite:////absolute/path/to/database
SQLite(Windows) sqlite:////c:/absolute/path/to/database
第四行设置自动提交,相当于在表中更新数据后,不用再手动进行commit,最后一行将目前的app对象创建SQLAlchemy实例db.
以上就是引入了一个SQLAlchemy对象实例,下面要做的就是利用该实例对数据库进行建模.我们说过,所谓建模就是将数据库的表格映射成一个类,而类中的属性就是表中的字段,同时这个类必须从SQLAlchemy的Model进行继承.
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 ''%self.name
class User(db.Model):
__tablename__='users'
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(64),unique=True)
def __repr__(self):
return ''%self.name
Github位置:
https://github.com/HymanLiuTS/flaskTs