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 用法总结的更多相关文章

  1. flask SQLAlchemy中一对多的关系实现

    SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...

  2. flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作

    flask, SQLAlchemy, sqlite3 实现 RESTful API, 同时支持form操作. 前端与后台的交互都采用json数据格式,原生javascript实现的ajax.其技术要点 ...

  3. 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 ...

  4. Flask – SQLAlchemy成员增加

    目录 简介 结构 展示 技术 运行 代码 创建数据库表单 views视图 home主页 添加成员addnew.html 展示页show_all 简介 结构 $ tree -I "__pyca ...

  5. Python操作MySQL -即pymysql/SQLAlchemy用法

    本节介绍Python对于MySQL的一些操作用法 模块1:pymysql(等同于MySQLdb) 说明:pymysql与MySQLdb模块的使用基本相同,学会pymysql,使用MySQLdb也就不是 ...

  6. Flask+SQLAlchemy+alembic+Flask-RESTful使用

    前言 其实准备把这篇删掉,先写Flask-restful相关的,后来想想大体框架还是先写出来,这两天踩了很多坑,有的谷歌也没有答案.一直摸索也总算是开始了. 正文 SQLAlchemy/alembic ...

  7. flask SQLALchemy外键及约束

    from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...

  8. python3 + flask + sqlalchemy +orm(3):多对多关系

    一篇文章有多个tag,一个tag也可以属于多篇文章,文章和tag存在多对多关系 config.py DEBUG = True #dialect+driver://root:1q2w3e4r5t@127 ...

  9. python3 + flask + sqlalchemy +orm(2):数据库中添加表

    往数据库中添加一张保存文章的表,表明为article,字段有id,title,content 同样一个配置文件:config.py DEBUG = True #dialect+driver://roo ...

  10. python3 + flask + sqlalchemy +orm(1):链接mysql 数据库

    1.pycharm中新建一个flask项目 2.按装flask.PyMySQL.flask-sqlalchemy 3.项目下面新建一个config.py 文件 DEBUG = True #dialec ...

随机推荐

  1. 【c学习-9】

    /*内存练习*/ #include #include//引入内存分配库文件 int main(){ double* x; //定义整型指针和double指针 int* y; x=(double*)ma ...

  2. 微信小程序图片上传

    uploadImage : function (){ wx.chooseImage({ count: 9, // 默认9 sizeType: ['original', 'compressed'], / ...

  3. VSCode插件整理

    VSCode插件整理 VSCode插件整理 官网地址 vscode常用配置(User Settings文件) 基本插件 前端插件 VUE部分 python MarkDown部分 连接Linux 本地与 ...

  4. 9.1 IIC驱动源码分析

    学习目标:分析linux内核源码下的i2c总线驱动 drivers/i2c/busses/i2c-s3c2410.c 和 driver/i2c/chips/eeprom.c 设备驱动: 一.i2c驱动 ...

  5. 初学tiny4412

    1.解压友善之臂提供的uboot make tiny4412_config make 然后将sd卡插到电脑上,编辑虚拟机,选择对应的usb口(usb3.0兼容),如果没有usb3.0,可能是虚拟机版本 ...

  6. golang 三个点的用法

    已经忘了这是第几次查这个用法了,还是记一下吧~ ^ _ ^ 本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/137 ...

  7. Python3 利用pip安装BeautifulSoup4模块(Windows版)

    一.找到Python3的安装文件夹 二.将路径复制 三.Windows10 打开Windows PowerShell(管理员).Windows 8.8.1.7使用cmd 切换到相应目录 四.此目录下的 ...

  8. WPF中的命令与命令绑定(二)

    原文:WPF中的命令与命令绑定(二) WPF中的命令与命令绑定(二)                                              周银辉在WPF中,命令(Commandi ...

  9. MVC中Session的使用和传递

    1.登录时在controller中记录session,代码如下: public ActionResult Login(UserLoginViewModel uViewModel) { if (Mode ...

  10. 使用sqoop将mysql中表导入hive中报错

    [hdfs@node1 root]$ sqoop import --connect jdbc:mysql://node2:3306/cm?charset-utf8 --username root -- ...