python Flask 操作数据库
Flask数据库
转载:Flask数据库 - 苦行僧95 - 博客园 (cnblogs.com)
Flask-SQLAlchemy
Flask-SQLAlchemy是在Flask中操作关系型数据库的拓展。是以面向模型对象的形式操作数据库,通过迁移完成建表
安装第三方库
pip install Flask-SQLAlchemy==2.2
pip install Flask-MySQLdb==0.2.0
基本配置
from flask_sqlalchemy import SQLAlchemy
# 配置数据库访问链接
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@127.0.0.1:3306/demo"
# 设置是否追踪数据库的增删改查,一般设置为False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Flase
# 创建SQLAlchemy对象,,并与当前数据库关联,TCP连接
db = SQLAlchemy(app)
自定义模型
class Publishers(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
address = db.Column(db.String(64)) def _str_(self): # print显示内容做设置
return self.name def _repr__(self): # 对列表中显示内容做设置
return self.name
对数据库增删改查
增
#第一种方法
user = User(name="laowang", age=18)
db.session.add(user) # 逻辑添加
db.session.commit() #第二种方法
user = User()
user.name = "laoli"
user.age = 18
db.session.add(user) # 逻辑添加
db.session.commit()
删
es = User.query.filter_by(name="laowang").first()
db.session.delete(es)
db.session.commit()
改
es = User.query.filter_by(id=3).first()
res.name="lisi"
查
模型类名.query.过滤器.查询执⾏行行器器
过滤器
返回BaseQuery类型对象 并不是最终的数据 最终的数据由 查询执行器获取
filert() 按照条件查找
比如:
User.quer.filter(User.name = "lisi")
filter_by() 按照条件精确查找
比如:
User.query.filter_by(id=1)
查询执行器
返回最终的结果
all() 返回查询到的所有结果,是一个列表, User.query.filter(User.name != 'wang').all()
first() 返回查询的第一个结果,User.query.filter(User.name != 'wang').first()
get() 返回主键对应的行, User.query.get(1)
count() 返回查询结果的数量 User.query.count()
paginate() 参数分别对应的是要查询的是第几页,每页几条数据,如果有错是否输出。 User.query.paginate(2, 3, False),这个例子是,每页三条数据,查询第二页的数据
关于查询的一些练习

排序
order_by()
例子:
# 正序
User.query.order_by(User.name)
# 倒序
User.query.order_by(User.name.desc())
一对多关系
在说一对多关系的时候,用的是班级表和学生表,班级模型类:Class,学生模型类:Student
一查多
relationship
在一的那一方,建立跟多的那一方的关联属性
# 在班级模型类中定义
student = db.relationship("Student")
# 查询
class = Class.query.get(1)
class.student
多对多关系
多对多是通过建立中间表实现的。中间表值记录关系和存储关系字段。
这个中间表将互为多对多的关系表的主键设为外键。
这个关系表是直接建立的,不适用于模型类映射
lazy属性
在一对多查询的时候,如果已经查询出一的那一方,可以决定多的那一方数据查询的时机,是在查出一后立即查出多的数据(默认),还是在使用的时候才去查询。
设置查出一就同时查出多
student = db.relationship("Student", backref = "class", lazy = "subquery")
class = Class.query.get(1)
class.student
如例子中,lazy设置为subquery之后,class.student会显示所有记录。
设置用到多是再查多
student = db.relationship("Student", backref = "class", lazy = "dynamic")
class = Class.query.get(1)
class.student
如例子中,lazy设置为subquery之后,class.student不会显示所有记录,可以用class.student[0]这样的下标取值。
python Flask 操作数据库的更多相关文章
- python Flask 操作数据库(2)
单表操作 数据准备 from flask import Flask from flask_sqlalchemy import SQLAlchemy class Config: DEBUG = True ...
- Python——Flask框架——数据库
一.数据库框架 Flask-SQLAlchemy (1)安装: pip install flask-sqlalchemy (2)Flask-SQLAlchemy数据库URL 数据库引擎 URL MyS ...
- flask 操作数据库(分类)
数据库 数据库是大多数动态web程序的基础设施,只要你想把数据存下来,就离不开数据库. 这里所说的数据库指的是有存储数据的单个或多个文件组成的集合,它是一种容器,可以类比文文件柜.而人们通常使用数据库 ...
- MySQL---连接器(python如何操作数据库媒介,基于python语言)
MySQL — 连接器 连接器的概念 它们往往是一类Python包,或者是一类已经写好的Python库.这些库提供了我们Python去连接数据库服务器的基本功能. 既然它是一个包,那么我们首先学会 ...
- Python:操作数据库
(一) 前言 本文说明如何连接Oracle.MySQL.sqlserver,以及执行sql.获取查询结果等. (二) DB-API DB-API阐明一系列所需对象和数据库 ...
- Python连接操作数据库
步骤: 1.创建与数据库的连接对象: 2.创建游标: 3.通过游标执行语句 4.增删改需要提交(commit)数据 5.关闭连接 如: import MySQLdb # Python通过MySQL ...
- python中操作数据库
python中要操作数据库,要使用该数据库在python中对应的驱动库,本文介绍python操作mysql数据库 1.首先安装pymysql 2.导入库 3.建立连接 4.建立游标 5.发起请求 6. ...
- python 连接操作数据库(二)
一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...
- python 多线程操作数据库
如果使用多线程操作数据库,容易引起多用户操作锁表 OperationalError: (2013, 'Lost connection to MySQL server during query') 使用 ...
随机推荐
- Redis实现布隆过滤器解析
布隆过滤器原理介绍 [1]概念说明 1)布隆过滤器(Bloom Filter)是1970年由布隆提出的.它实际上是一个很长的二进制向量和一系列随机映射函数.布隆过滤器可以用于检索一个元素是否在一个集合 ...
- vue2使用组件进行父子互相传值的sync语法糖方法和原生方法
原生方法:(事件名可以不在props通道里) 子类通过props通道绑定父类里data里的jjjjjj(@:fefefeff='jjjjjjjjjjjjj') 父组件通过监听fefeff事件来把子类传 ...
- Linux中CentOS 7版本安装JDK、Tomcat、MySQL、lezsz、maven软件详解
软件安装 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 rpm安装 软件已经按照 ...
- 痞子衡嵌入式:i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad. 最近碰到一个客户,他们在 i.MX ...
- NLP之基于BERT的预测掩码标记和句间关系判断
BERT @ 目录 BERT 程序步骤 程序步骤 设置基本变量值,数据预处理 构建输入样本 在样本集中随机选取a和b两个句子 把ab两个句子合并为1个模型输入句,在句首加入分类符CLS,在ab中间和句 ...
- Sentinel 介绍与下载使用
sentinel 前方参考 计算QPS-Sentinel限流算法 https://www.cnblogs.com/yizhiamumu/p/16819497.html Sentinel 介绍与下载使用 ...
- 13-ORM-更新&删除
一.更改单个数据 修改单个实体的某些字段 1.查: - 通过get()得到要修改的实体对象 2.改: - 通过对象属性的=的方式修改数据 3.保存 - 通过对象.save()保存数据 二.批量 ...
- JS数据结构与算法-概述
JS数据结构与算法概述 数据结构: 计算机存储, 组织数据的方式, 就像锅碗瓢盆 算法: 一系列解决问题的清晰指令, 就像食谱 两者关系: 程序 = 数据结构 + 算法 邂逅数据结构与算法 什么是数据 ...
- 陪你去看 Lodash.js 起步
lodash 起步(数组) Lodash 是一个较为流行的 JavaScript 的实用工具库. 在开发过程中如果能熟练使用一些工具库提供的方法,有利于提高开发效率. 笔者从 API 上入手,不分析其 ...
- C#程序自启动
在窗体加载事件里面加入下述代码: //设置开机自启动 RegistryKey registryKey = Registry.CurrentUser.OpenSubKey ("SOFTWARE ...