昨日回顾

类装饰器可能有两种含义:

  1. 使用类作为装饰器
  2. 装饰类的装饰器

基本增删查改:单表

# 0 sqlalchemy创建表:Base = declarative_base()
-只能创建和删除
-不能创建数据库
-不能修改表 # 1 快速插入数据
-借助于session对象
from sqlalchemy.orm import sessionmaker
Session=sessionmaker(bind=engine)
session=Session() #会话,连接
session.add(表模型的对象)
session.add_all([对象,对象])
session.commit()
session.close()
-session.close没有将连接断开,而是将链接放入连接池中。 # 2 多线程情况下,并发安全问题
-全局就用一个session
-scoped_session可以保证并发情况下,session的安全
-scoped_session类,内部有个local对象,把session放到了local中
-全局就使用一个session,会有并发安全的问题。
-每个session就使用当前线程的,如果当前线程没有session就新建一个,放在local对象中。 # 3 类装饰器
-装饰类的装饰器:加在类上的装饰器,昨天讲过了
-类作为装饰器用:
# 类作为装饰器来用
class Wrapper():
def __init__(self, func):
self.func = func def __call__(self, *args, **kwargs):
# 前面加代码
print('我在你前面')
res = self.func(*args, **kwargs)
# 后面加代码
print('我在你后面')
return res @Wrapper # add=Wrapper(add)--->触发Wrapper的__init__---->现在add是Wrapper类的对象
def add():
print('add') # 4 基本增删查改:单表
-增:add add_all
-查:filter:表达式,filter_by:具体值
-删:查出来.delete()
-改:
查出来.update({'name':"lqz"})
查出来.update({User.name:"lqz"})
对象.name='lqz'
add(对象) # 5 高级查询
-in
-between
-like
-排序
-分页
-原生sql
-分组。。。 # 6 一对多关系的建立
Person :hobby_id,hobby
Hobby -新增,基于对象的新增
-基于对象的跨表正向反向
# 7 多对多
GIrl
Boy
Boy2Girl
-新增
-基于对象的跨表查询
# 8 连表查询
res = session.query(Person, Hobby).filter(Person.hobby_id == Hobby.id).all()
session.query(Person).join(Hobby).all()

今日内容

1 flask-sqlalchemy使用

# 集成到flask中,直接使用sqlalchemy,看代码
# 有个第三方flask-sqlalchemy,帮助咱们快速的集成到flask中
# flask-sqlalchemy实际上是将sqlalchemy那一套再封装在了一个对象里。
# engine链接的部分放在配置文件拿,就不需要每次都写engine连接部分的代码了。 # sqlalchemy中也可以使用序列化类,要安装第三方模块flask-restful。 # 使用flask-sqlalchemy集成
1 导入 from flask_sqlalchemy import SQLAlchemy
2 实例化得到对象
db = SQLAlchemy()
3 将db注册到app中
db.init_app(app)
4 视图函数中使用session
全局的db.session # 线程安全的
5 models.py 中继承Model
db.Model
6 写字段
username = db.Column(db.String(80), unique=True, nullable=False)
7 配置文件中加入
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root@127.0.0.1:3306/ddd?charset=utf8"
SQLALCHEMY_POOL_SIZE = 5
SQLALCHEMY_POOL_TIMEOUT = 30
SQLALCHEMY_POOL_RECYCLE = -1
# 追踪对象的修改并且发送信号
SQLALCHEMY_TRACK_MODIFICATIONS = False

2 flask-migrate使用

原生的sqlalchemy,不支持修改表。

如果我们想实现类似于django的功能:表发生变化,都会有记录,自动同步到数据库。需要安装第三方模块flask-migrate。

# 表发生变化,都会有记录,自动同步到数据库中
# 原生的sqlalchemy,不支持修改表的
# flask-migrate可以实现类似于django的
python manage.py makemigrations #记录
python manage.py migrate #真正的同步到数据库 # 使用步骤
0 flask:2.2.2 flask-script:2.0.3
1 第一步:安装,依赖于flask-script
pip3.8 install flask-migrate==2.7.0
2 在app所在的py文件中
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand) manager.run() # 以后使用python manage.py runserver 启动项目 3 以后第一次执行一下
python manage.py db init # 生成一个migrations文件夹,里面以后不要动,记录迁移的编号 4 以后在models.py 写表,加字段,删字段,改参数 5 只需要执行
python manage.py db migrate # 记录
python manage.py db upgrade # 真正的同步进去

3 flask项目演示

# 0 创建数据库 movie
# 1 pycharm打开项目
# 3 在models中,注释,解开注释,右键执行,迁移表
# 4 在models中恢复成原来的
# 5 在命令行中python manage.py runserver运行项目
# 6 访问前台和后台

【flask】flask-sqlalchemy使用 flask-migrate使用 flask项目演示的更多相关文章

  1. 9、flask之SQLAlchemy

    本篇导航: 介绍 使用 SQLAlchemy-Utils 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之 ...

  2. flask之SQLAlchemy

    本篇导航: 介绍 使用 SQLAlchemy-Utils 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之 ...

  3. Flask之SQLAlchemy,flask_session以及蓝图

    数据库操作 ORM ORM 全拼 Object-Relation Mapping,中文意为 对象-关系映射.主要实现模型对象到关系数据库数据的映射 优点 : 只需要面向对象编程, 不需要面向数据库编写 ...

  4. python 全栈开发,Day142(flask标准目录结构, flask使用SQLAlchemy,flask离线脚本,flask多app应用,flask-script,flask-migrate,pipreqs)

    昨日内容回顾 1. 简述flask上下文管理 - threading.local - 偏函数 - 栈 2. 原生SQL和ORM有什么优缺点? 开发效率: ORM > 原生SQL 执行效率: 原生 ...

  5. No module named flask.ext.sqlalchemy.SQLALchemy

    在学习<OReilly.Flask.Web.Development>的时候,按照书的例子到了数据库那一章,在运行python hello.py shell的时候出现了“ImportErro ...

  6. flask 使用 SQLAlchemy 的两种方式

    1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.py from flask import Flask from flask.ext.sqlalchem ...

  7. flask 与 SQLAlchemy的使用

    flask 与 SQLAlchemy的使用 安装模块 pip install flask-sqlalchemy 在单个python中与flask使用 # 文件名:manage.py from flas ...

  8. 描述怎样通过flask+redis+sqlalchemy等工具,开发restful api

    flask开发restful api系列(8)-再谈项目结构 摘要: 进一步介绍flask的项目结构,使整个项目结构一目了然.阅读全文 posted @ 2016-06-06 13:54 月儿弯弯02 ...

  9. Flask最强攻略 - 跟DragonFire学Flask - 第十四篇 Flask-SQLAlchemy

    前不久刚刚认识过了SQLAlchemy,点击这里复习一下 当 Flask 与 SQLAlchemy 发生火花会怎么样呢? Flask-SQLAlchemy就这么诞生了 首先要先安装一下Flask-SQ ...

  10. Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

随机推荐

  1. matlab实现频谱感知-认知无线电

    1.前言 \(\quad\) 频谱感知的方法有很多,比如匹配滤波探测,能量检测,静态循环特征探测等方法,然后最近因为在用硬件做能量检测,所以本文主要是说了如何用matlab实现能量检测,它的大概流程就 ...

  2. kubernetes container device interface (CDI)

    CDI 是什么? Container Device Interface (CDI) 是一个提议的标准,它定义了如何在容器运行时环境中向容器提供设备.这个提议的目的是使得设备供应商能够更容易地将其设备集 ...

  3. 🔥🔥Java开发者的Python快速进修指南:函数进阶

    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法.尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍.因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰 ...

  4. Windows10下的hexo搭建

    用hexo搭建个人博客 查看效果:慢蜗牛博客 目录 用hexo搭建个人博客 准备环境 Github Node.js和Git 连接Github 安装hexo 安装插件 部署 Hexo 到 GitHub ...

  5. i-MES生产制造管理系统-总览

    前言 说起 MES 就不得不说 ERP,但是 ERP 大家基本上都知道,MES 就不一定了,常见的 ERP 系统包括 SAP.金蝶.用友等,ERP的流程相对来说也比较统一:MES就不同了,基本上熟悉业 ...

  6. 洛谷P2579 [ZJOI2005]沼泽鳄鱼(矩阵快速幂,周期)

    例题:现在豆豆已经选好了两座石墩Start和End,他想从Start出发,经过K个单位时间后恰好站在石墩End上.假设石墩可以重复经过(包括Start和End),他想请你帮忙算算,这样的路线共有多少种 ...

  7. git可视化管理工具有哪些?

    在 Git 中,有许多可视化管理工具可供使用.以下是一些常见的 Git 可视化管理工具及其功能的详细介绍. GitHub Desktop: GitHub Desktop 是由 GitHub 官方推出的 ...

  8. 基于DotNetty实现自动发布 - 实现一键打包发布

    前言 上一篇,我只实现了一键检测代码变化,本篇才是真正的实现了一键打包发布 效果图 客户端打包待发布文件 /// <summary> /// 把多个文件添加到压缩包 (保留文件夹层级关系) ...

  9. StarBlog - 2023年底更新内容一览

    前言 先说一下我对 StarBlog 这个系列的文章的规划吧,在 StarBlog 的 1.x 版本,我会同步更新两个系列的文章 博客前台+接口开发笔记 (即当前已发布的这一系列文章) 博客Vue后台 ...

  10. 2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河 敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭 现在军队只找到了1只小船,这船最多能同时坐上2个士兵。

    2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河 敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭 现在军队只找到了1只小船,这船最多能同时坐上2个士兵. ...