用flask开发个人博客(18)—— 数据库模型的创建
2016-10-02 23:59
453 查看
FLASK-SQLAlchemy是flask中一个数据库管理类框架,它封装了对大部分数据库的支持,包括关系型数据库Mysql/Postgres/SQLlite,以及Redis/MongoDB等非关系型数据库,通过SQLAlchemy,我们可以不用再关心SQL语句的使用,只需进行将数据库建模,并像管理一个类对象一样管理数据库即可.
我们先进行数据库的建模,所谓建模就是创建一个类,那建模之前,我们先进行准备工作-引入相关SQLAlchemy库,创建SQLAlchemy对象等等.
数据库引擎 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进行继承.
上面两个类分别建立roles表和users表两个模型,两个模型中分别声明了id和name两个字段,同时设置了主键和唯一性约束,以后我们操作Role或者User对象就相当与操作roles表和users表.
Github位置:
https://github.com/HymanLiuTS/flaskTs
克隆本项目:
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL18
我们先进行数据库的建模,所谓建模就是创建一个类,那建模之前,我们先进行准备工作-引入相关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 '<Role %s>'%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 '<User %s>'%self.name
上面两个类分别建立roles表和users表两个模型,两个模型中分别声明了id和name两个字段,同时设置了主键和唯一性约束,以后我们操作Role或者User对象就相当与操作roles表和users表.
Github位置:
https://github.com/HymanLiuTS/flaskTs
克隆本项目:
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL18
相关文章推荐
- 用flask开发个人博客(20)—— 利用模型创建数据库
- 用flask开发个人博客(26)—— 利用config.py配置文件动态的创建不同的Flask对象
- 用flask开发个人博客(27)—— 利用程序工厂函数创建Flask程序对象并注册蓝本
- 用flask开发个人博客(3)—— flask中的请求和视图函数映射
- 用flask开发个人博客(10)—— Jinja2模板中的控制结构
- 用flask开发个人博客(7)—— flask中设置和获取cookie
- 用flask开发个人博客(23)—— flask中的数据模型关系
- 用flask开发个人博客(4)—— flask中4种全局变量
- 用flask开发个人博客(5)——flask中的四种响应类型
- 用flask开发个人博客(22)—— 使用Flask-Migrate实现数据库的更新
- 用flask开发个人博客(17)—— Flash消息
- 用flask开发个人博客(8)—— flask中的模板
- 用flask开发个人博客(16)—— 表单类的使用
- 从开发到部署,使用django创建一个简单可用的个人博客
- 用flask开发个人博客(21)—— 在视图函数中操作数据库
- 用flask开发个人博客(1)—— 一个简单的flask程序
- 用flask开发个人博客(9)—— Jinja2模板中的变量
- 用flask开发个人博客(13)—— 链接静态资源
- 用flask开发个人博客(14)—— flask中本地化时间的引用
- 用flask开发个人博客(29)—— 其他主要模块