flask-sqlalchemy 用法总结
Flask-SQLAlchemy是一个Flask扩展,能够支持多种数据库后台,我们可以不需要关心SQL的处理细节,操作数据库,一个基本关系对应一个类,而一个实体对应类的实例对象。Flask是一个轻量级的web框架,而SQLAlchemy 是转为Flask定制的ORM框架。
安装flask-sqlalchemy
pip install flask-sqlalchemy
初始化sqlalchemy
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__)
# 配置 sqlalchemy 数据库驱动://数据库用户名:密码@主机地址:端口/数据库?编码
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://password:@127.0.0.1:3306/db?charset=utf8'
# 初始化
db = SQLAlchemy(app)
注意:
SQLALCHEMY_DATABASE_URI 是关键字,默认数据源配置变量。而我们在实际操作中,难免要同时连接多个数据库,这个时候就要配置多个数据源,而SQLAlchemy提供了很方便的多数据源配置。
只需在配置文件中这样写就可以:
SQLALCHEMY_DATABASE_URI = 'postgres://localhost/main'
SQLALCHEMY_BINDS = {
'users': 'mysqldb://localhost/users',
'appmeta': 'sqlite:////path/to/appmeta.db'
}
SQLALCHEMY_DATABASE_URI 是默认数据源,users和appmeta是其他数据源,用的时候也非常方便,在model中加入 __bind_key__ = 'users' 即可。
- 模型
数据库表映射到模型,继承db.model类即可
class RoadReportErrorCheck(db.Model):
__bind_key__ = 'mdb_plat'
__tablename__ = 'road_report_error_check'
order_id = db.Column(db.Integer, nullable=False, default=0, primary_key=True) #订单ID
p_pid = db.Column(db.String(32), nullable=False, default='') #包ID
check_state = db.Column(db.Integer, nullable=False, default=0) #0未审核,1初审,2复审
first_checker = db.Column(db.String(32), nullable=False, default='') #轨迹点初审人
first_check_time = db.Column(db.TIMESTAMP, nullable=False, default=0) #轨迹点初审时间
checker = db.Column(db.String(32), nullable=False, default='') #轨迹点复审人
check_time = db.Column(db.TIMESTAMP, nullable=False, default=0) #轨迹点复审时间
description = db.Column(db.String(200), nullable=False, default='') #轨迹点审核描述
receive_flag = db.Column(db.Integer, nullable=False, default=0) #外包领取,0未领,1已领
create_time = db.Column(db.TIMESTAMP, nullable=False, default=0)
update_time = db.Column(db.TIMESTAMP, nullable=False, default=datetime.now)
- 建表
只需初始化一个变量,添加到session中即可
group_info = Group_Check(id=id,package_id=package_id,user=user,upload_time=upload_time,orderid=orderid,group_track_url=group_track_url,xf_links=xf_links,create_time=datetime.datetime.now())
db.session.add(group_info)
db.session。commit()
- 过滤
SQLAlchemy 提供了很多种方便的过滤方法。写法如下:
#查询单个
Group_Check.query.fliter(Group_Check.id == id).first()
#查询所有
Group_Check.query.fliter(Group_Check.id == id).all()
#条件查询
Group_Check.query.fliter(db.and_(Group_Check.id == id, Group_Check.state==1))
#求和
Group_Check.query.fliter(db.and_(Group_Check.id == id, Group_Check.state==1))
flask-sqlalchemy 用法总结的更多相关文章
- flask SQLAlchemy中一对多的关系实现
SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...
- flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
flask, SQLAlchemy, sqlite3 实现 RESTful API, 同时支持form操作. 前端与后台的交互都采用json数据格式,原生javascript实现的ajax.其技术要点 ...
- flask建表遇到的错误: flask,sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1071, 'Specified key was too long; max key length is 767 bytes')
error:flask,sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1071, 'Specifie ...
- Flask – SQLAlchemy成员增加
目录 简介 结构 展示 技术 运行 代码 创建数据库表单 views视图 home主页 添加成员addnew.html 展示页show_all 简介 结构 $ tree -I "__pyca ...
- Python操作MySQL -即pymysql/SQLAlchemy用法
本节介绍Python对于MySQL的一些操作用法 模块1:pymysql(等同于MySQLdb) 说明:pymysql与MySQLdb模块的使用基本相同,学会pymysql,使用MySQLdb也就不是 ...
- Flask+SQLAlchemy+alembic+Flask-RESTful使用
前言 其实准备把这篇删掉,先写Flask-restful相关的,后来想想大体框架还是先写出来,这两天踩了很多坑,有的谷歌也没有答案.一直摸索也总算是开始了. 正文 SQLAlchemy/alembic ...
- flask SQLALchemy外键及约束
from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...
- python3 + flask + sqlalchemy +orm(3):多对多关系
一篇文章有多个tag,一个tag也可以属于多篇文章,文章和tag存在多对多关系 config.py DEBUG = True #dialect+driver://root:1q2w3e4r5t@127 ...
- python3 + flask + sqlalchemy +orm(2):数据库中添加表
往数据库中添加一张保存文章的表,表明为article,字段有id,title,content 同样一个配置文件:config.py DEBUG = True #dialect+driver://roo ...
- python3 + flask + sqlalchemy +orm(1):链接mysql 数据库
1.pycharm中新建一个flask项目 2.按装flask.PyMySQL.flask-sqlalchemy 3.项目下面新建一个config.py 文件 DEBUG = True #dialec ...
随机推荐
- pyqt5--学习资料
http://zetcode.com/gui/pyqt5/ http://www.thehackeruniversity.com/2014/01/23/pyqt5-beginner-tutorial/ ...
- MySQL5.7版本安装
安装方式一: ZIP压缩包安装 >>>首先,到MYSQL官网下载.zip格式的MySQL Server的压缩包,根据需要选择x86或x64版. >>>下载需要登录o ...
- zookeeper环境搭建(Linux)
安装zookeeper 安装jdk(此处省略) 解压tar包并配置变量环境 配置文件修改 将/usr/local/src/zookeeper-3.4.5/conf这个路径下的zoo_sample.cf ...
- mongodb常用命令学习笔记
mongodb常用命令学习笔记 创建数据库 use DATABASE_NAME eg: use users; 如果数据库不存在,则创建数据库,否则切换到指定数据库.要显示刚刚创建的数据库,需要向数据库 ...
- 集合--数据结构与算法JavaScript描述(9)
集合 Set 概念 (跟高中时数学课上学的集合几乎一模一样哦哈哈) 集合是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要的特性: 集合中的成员是无序的. 集合中不允许相同成员存 ...
- vue 项目如何使用微信分享接口
首先做微信网页都要接入微信sdk: 安装sdk npm install weixin-js-sdk --save 具体可以查看微信公众平台技术文档:https://mp.weixin.qq.com/w ...
- linux挂载命令mount及U盘、移动硬盘的挂载
一.mount的命令格式是(注意mount只能在root权限下运行) mount dervice dir dervice是要挂载的设备,dir是挂载点 二.查看当前磁盘列表的设备 fdisk -l 显 ...
- 图表制作工具之ECharts
简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10 ...
- WCF入门四[WCF的通信模式]
一.概述 WCF的通信模式有三种:请求/响应模式.单向模式和双工通信. 二.请求/响应模式 请求/响应模式就是WCF的默认模式,前面几篇随笔中的示例都是这种模式,当客户端发送请求后(非异步状态下),即 ...
- C++11中rvalue references的使用
Rvalue references are a feature of C++ that was added with the C++11 standard. The syntax of an rval ...