首页 > 数据库 >flask-sqlalchemy使用、flask-migrate使用、flask项目演示

flask-sqlalchemy使用、flask-migrate使用、flask项目演示

时间:2023-04-17 16:11:24浏览次数:58  
标签:sqlalchemy flask py db migrate add session

昨日内容回顾

# 1 sqlalchemy创建表:Base = declarative_base()
    -只能创建和删除
    -不能创建数据库
    -不能修改表
    
# 2 快速插入数据
    -借助于session对象
     from sqlalchemy.orm import sessionmaker
     Session = sessionmaker(bind=engine)
     session = Session()  # 会话 连接
     session.add(表模型的对象)
     session.add_all([对象,对象])
     session.commit()
     session.close()
        
# 3 多线程情况下,并发安全问题
    -全局就用一个session
    -scoped_session可以保证并发情况下,session的安全
    -scoped_session类,内部有个local对象,把session放到了local中
    
# 4 类装饰器
    -装饰类的装饰器:加在类上的装饰器
    -类作为装饰器用:
    # 类作为装饰器来用
    class Wapper():
        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')
        
# 5 基本的增删改查:单表
    -增:add add_all
    -删:查出来.delete()
    -改:查出来.update({'name':'superxz'})
        查出来.update({User.name:"superxz"})
        对象.name='superxz'
        add(对象)
    -查:filter:表达式,filter_by:具体值
            
# 6 高级查询
    -in
    -between
    -like
    -排序
    -分页
    -原生sql
    -分组
    
# 7 一对多关系的建立
    Person:hobby_id,hobby
    Hobby
    
    -新增,基于对象的新增
    -基于对象的跨表正向反向
    
# 8 多对多
    Girl
    Boy
    Boy2Girl
    -新增
    -基于对象的跨表查询
    
# 9 连表查询
    res = session.query(Person,Hobby).filter(Person.hobby_id == Hobby.id).all()
    session.query(Person).join(Hobby).all()

今日内容

  • flask-sqlalchemy使用

  • flask-migrate使用

  • flask项目演示

1 flask-sqlalchemy使用

# 集成到flask中,直接使用sqlalchemy,看代码
# 有个第三方flask-sqlalchemy,帮助咱们快速的集成到flask中

	
#  使用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://[email protected]:3306/ddd?charset=utf8"
    SQLALCHEMY_POOL_SIZE = 5
    SQLALCHEMY_POOL_TIMEOUT = 30
    SQLALCHEMY_POOL_RECYCLE = -1
    # 追踪对象的修改并且发送信号
    SQLALCHEMY_TRACK_MODIFICATIONS = False

image-20230411214250008

image-20230411214306959

image-20230411214323161

image-20230411214338867

image-20230411224411879

2 flask-migrate使用

# 表发生变化,都会有记录,自动同步到数据库中
# 原生的sqlalchemy,不支持修改表的
# flask-migrate可以实现类似于django的
    python manage.py makemigrations #记录
    python manage.py migrate        #真正的同步到数据库
    
    
    
    
    
# 使用步骤
     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 访问前台和后台

标签:sqlalchemy,flask,py,db,migrate,add,session
From: https://www.cnblogs.com/super-xz/p/17326186.html

相关文章

  • Flask001_环境搭建
    Python环境查看Python版本python--versionFlask版本安装Flaskpipinstallfalsk查看Flask版本importflaskprint(flask.__version__)PycharmProfessional学习使用系统环境变量项目结构......
  • docker:Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署flask+redi
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......
  • docker,Dockerfile,docker私有仓库,dockercompose介绍,dockercompose部署flask+redis项目,d
    内容回顾容器操作dockerstart容器id启动容器dockerstop容器id停止容器dockerrm 容器id删除容器ockerrm`dockerps-aq`#正在运行的容器不能删除dockerexec容器id命令让容器执行命令dockercp宿主机目录容器id:容器目录#目录要存在dockercp容......
  • 轻量级Web框架Flask(二)
    Flask-SQLAlchemyMySQL是免费开源软件,大家可以自行搜索其官网(https://www.MySQL.com/downloads/)测试MySQL是否安装成功在所有程序中,找到MySQL→MySQLServer5.6下面的命令行工具,然后单击输入密码后回车,就可以知道MySQL数据库是否链接成功。右击桌面上的“计算机”,在弹出的快......
  • SSE协议及flask实现
    介绍服务器推送事件:Server-SentEvents,SSE特点仅从服务器向客户端实现单向实时通信。实现简单,基于HTTP协议。浏览器端有断线重连功能。支持用户自定义消息类型。用来传送文本,二进制需要编码。flask-sse实现flask-sse文档前置条件本地Redis服务器gunicorngeven......
  • docker01 flask-sqlalchemy flask-migrate使用 flask项目演示 docker介绍与安装
    今日内容详细目录今日内容详细1flask-sqlalchemy使用2flask-migrate使用3flask项目演示4docker介绍4.1什么是虚拟化4.2docker是什么4.3容器与虚拟机比较4.4Docker概念5docker安装1flask-sqlalchemy使用#集成到flask中,直接使用sqlalchemy,看代码#有个第三方flask-sq......
  • docker-day4——Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署f
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......
  • macos shangflask tradingview python环境安装
    1.Homebrew4.0后更新报错问题原文参考brewupdateFailedtodownloadhttps://formulae.brew.sh/api/formula.jws.json!Homebrew4.0进行了一项最大的改动,组织方式从Git仓库管理改为JSON文件下载。JSON配置文件会从formulae.brew.sh下载,本地的homebrew/core、homebrew/cas......
  • flask使用sqlalchemy
    flask使用sqlalchemyflask-sqlalchemy集成方案借助第三方模块flask-sqlalchemy,可以将sqlalchemy快速的集成到flask项目中。pipinstallflask_sqlalchemyfromflask_sqlalchemyimportSQLAlchemydb=SQLAlchemy()#产生一个SQLAlchemy对象#将db注册到app中db.init......
  • flask的基础使用
    基于django,flask的自动化运维项目flask入门级教程https://tutorial.helloflask.com/preface/在Linux系统中部署flask并使用准备工作:python3.6版本以上,pycharm或vscode,chrome浏览器,github账号$cdwatchlist$python3--version #查看python3版本Python3.9.10$git-......