类装饰器
1 装饰类的装饰器:加在类上的装饰器
2 类作为装饰器来用:
class Wrapper():
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print('我在你前面')
res = self.func(*args, **kwargs)
print('我在你后面')
return res
@Wrapper
def add():
print('add')
flask-sqlalchemy使用
pip install 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
代码:视图代码
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:222@127.0.0.1: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:222@127.0.0.1:3306/ddd")
Session = sessionmaker(bind=engine)
session = scoped_session(Session)
flask-migrate使用
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()
3 以后第一次执行一下
python manage.py db init
4 以后在models.py 写表,加字段,删字段,改参数
5 只需要执行
python manage.py db migrate
python manage.py db upgrade
项目演示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)