首页 > 数据库 >flask最后 类装饰器定义、flask-sqlalchemy使用、flask-mmigrate使用、flask项目演示

flask最后 类装饰器定义、flask-sqlalchemy使用、flask-mmigrate使用、flask项目演示

时间:2023-04-11 19:46:30浏览次数:42  
标签:__ sqlalchemy mmigrate flask app py db

类装饰器

1 装饰类的装饰器:加在类上的装饰器
2 类作为装饰器来用:

# 类作为装饰器来用:(主要用__init__和__call__进行进行功能添加)
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')

flask-sqlalchemy使用

# 集成flask中,直接使用sqlalchemy
# 有个第三方flask-sqlalchemy,帮助咱们快速的集成到flask中
pip install flask-sqlalchemy   安装

#  使用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

代码:视图代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.debug = True


app.config.from_pyfile('settings.py')
db = SQLAlchemy()
db.init_app(app)


@app.route('/')
def index():
    from models import Book
    db.session.add(Book(name='xxx'))
    db.session.commit()

    return '新增成功'

if __name__ == '__main__':
    app.run()

settings.py代码

SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]:3306/ddd?charset=utf8"
SQLALCHEMY_POOL_SIZE = 5
SQLALCHEMY_POOL_TIMEOUT = 30
SQLALCHEMY_POOL_RECYCLE = -1
# 追踪对象的修改并且发送信号
SQLALCHEMY_TRACK_MODIFICATIONS = False

models.py代码:
from manage import db
class Book(db.Model):
    __tablename__ = 'books'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))
session_sql连接数据库代码
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import scoped_session

engine = create_engine("mysql+pymysql://root:[email protected]:3306/ddd")

Session = sessionmaker(bind=engine)
session = scoped_session(Session)

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  # 真正的同步进去

项目演示

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

标签:__,sqlalchemy,mmigrate,flask,app,py,db
From: https://www.cnblogs.com/xm15/p/17307403.html

相关文章

  • flask-flask-sqlalchemy使用
    1.flask-sqlalchemy使用1.使用原生sqlalchemy写接口:只要一访问根目录,就会添加这本书fromflaskimportFlaskfromsettingsimportsessionfrommodelsimportBookapp=Flask(__name__)@app.route('/')defindex():'''数据暂时写死,后期可以动态添加'''s......
  • flask-sqlalchemy,flask-migrate
    目录flask-sqlalchemy使用flask-migrateflask-sqlalchemy使用把sqlalchemy集成到flask中使用models#导入fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemyimportColumn,Integer,String,Text,ForeignKe......
  • flask之sqlalchemy快速插入数据-scoped_session线程安全-基本增删改查-表模型一对多-
    目录flask之sqlalchemy快速插入数据-scoped_session线程安全-基本增删改查-表模型一对多-多对多-连表查询今日内容1sqlalchemy快速插入数据2scoped_session线程安全2.1基本使用2.2加在类上的装饰器3基本增删改查3.1基本增删改查和高级查询3.2原生sql3.3django中执行原生sq......
  • flask-sqlalchemy使用,flask-migrate使用
    flask-sqlalchemy使用,flask-migrate使用flask-sqlalchemy使用集成到flask中,我们可以用sqlalchemy来做,就是比较的繁琐现在有一个第三方的flask-sqlalchemy,可以快速的集成到flask中#使用flask-sqlalchemy集成1.下载flask-sqlalchemy#pipinstallflask-sqlalchemy2.导......
  • sqlalchemy详解及 快速使用
    sqlalchemy详解及快速使用快速使用#flask中没有orm框架,对象关系映射,方便我们快速操作数据库#flask,fastapi中用sqlalchemy居多#SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在DBAPI之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用......
  • Flask快速入门day 06 (sqlalchemy的使用,scoped-session线程安全)
    目录Flask框架之sqlalchemy的使用一、SQLAlchemy基本使用1、简介2、操作原生sql3、表创建4、ORM操作4、1.基本使用4、2.增删改查4、3.高级查询二、外键关系1、一对多1、1.表模型1、2.新增和基于对象的查询2、多对多2、1.表模型2、2.新增和基于对象查询3、连表查询三、scoped_sessi......
  • sqlalchemy 报错 lost connection 解决
    最近在开发过程中遇到一个sqlalchemylostconnection的报错,记录解决方法。报错信息python后端开发,使用的框架是Fastapi+sqlalchemy。在一个接口请求中报错如下:[2023-03-2406:36:35+0000][217][ERROR]ExceptioninASGIapplicationTraceback(mostrecentcalllast)......
  • flask----day06()
    简历如何写--------------------------------------------------------#讲完后,用3---5天时间,把简历写好,发我看一下,就可以开始投了#你写简历的目的:只是为了有个面试机会#第一步:找一个简历模板---》导出成pdf也可以使用md写https://m.job592.com/doc/ -下载,在模板的......
  • flask6
    今日内容1sqlalchemy快速插入数据#sqlalchemy是什么orm框架,跟其他web框架没有必然联系,可以独立使用#安装,快速使用,执行原生sql#创建表和删除表 -不能创建数据库-不能修改字段(增加,删除)#使用orm插入fromsqlalchemyimportcreate_enginefromsqlalch......
  • flask框架05 信号 flask-script命令 sqlalchemy创建操作数据表
    今日内容详细目录今日内容详细1信号1.1django信号2flask-script3sqlalchemy快速使用4sqlalchemy介绍和快速使用4.1sqlalchemy介绍和快速使用5创建操作数据表1信号#Flask框架中的信号基于blinker(安装这个模块),其主要就是让开发者可是在flask请求过程中定制一些用户行为......