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. ajax在同一页面中同控制器不同方法中调用数据并异步刷新的实例

    我在实习以来都有做一些笔记,之前做的笔记都在简书里,现在我提前把公司给我的任务做好了,坐在电脑前又不好玩别的,那么我就整理下我之前的笔记吧!(此项目是thinkphp5开发的) 先上效果图 这是整体页 ...

  2. php 移动或重命名文件(图片)到另一目录下的方法有多种,这里只列出三种:

    php 移动或重命名文件(图片)到另一目录下的方法有多种,这里只列出三种:       方法一:使用copy函数   格式:copy(source,destination)   将文件从 source ...

  3. 微信小程序INC自增自减MUL自乘问题

    今天使用到微信小程序云开发中的数据库自增字段问题出现了错误 Uncaught (in promise) ReferenceError: _ is not defined 官方给出的INC方法文档 db ...

  4. Python练习笔记(2)

    文件读写,多线程.多进程 import time,os,threading,random def file_read(path): try: with open(path, 'r') as f: # ...

  5. Spark 推送数据至 elasticsearch

    1.工程依赖 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsearch--&g ...

  6. py3.7.1下pyinstaller 的安装及打包 坑

    实在无语了,写了个小程序,用pyinstaller打包,运行就出现这个pip install pywin32-ctypes.明明全部都已经安装了啊. 解决办法: 不要在工程设置里安装pyinstall ...

  7. 2.从print到自省

    print是一个函数   为什么print是一个函数呢?可以在交互式解释器下 输入: >>> type(print) 输出: <class 'builtin_function_ ...

  8. node获取头信息数据

    req.fresh req.stale var version = 100; app.get('/test',function(req,res){ res.set('etag',version); i ...

  9. Python3乘法口诀表(由上至下+由下至上)

    一.所用知识点: 1.变量的使用. 2.循环语句的使用,这里用到的是双while循环.当然,使用其他的循环去做也是可以的.我认为,对于刚刚接触编程的人来说,使用双while循环比较容易理解. 3.使用 ...

  10. python2.7练习小例子(十七)

        17):题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制.     程序分析: ...