1 信号
| |
| |
| pip3.8 install blinker |
| |
| |
| |
| |
| -方案一:在每个增加后,都写一行代码 ---》后期要删除,比较麻烦 |
| -方案二:使用信号,写一个函数,绑定内置信号,只要程序执行到这,就会执行这个函数 |
| |
| request_started = _signals.signal('request-started') |
| request_finished = _signals.signal('request-finished') |
| |
| before_render_template = _signals.signal('before-render-template') |
| template_rendered = _signals.signal('template-rendered') |
| |
| got_request_exception = _signals.signal('got-request-exception') |
| |
| request_tearing_down = _signals.signal('request-tearing-down') |
| appcontext_tearing_down = _signals.signal('appcontext-tearing-down') |
| |
| appcontext_pushed = _signals.signal('appcontext-pushed') |
| appcontext_popped = _signals.signal('appcontext-popped') |
| message_flashed = _signals.signal('message-flashed') |
| |
| |
| |
| |
| 1 写一个函数 |
| 2 绑定内置信号 |
| 3 等待被触发 |
| |
| |
| |
| |
| session_set = _signals.signal('session_set') |
| |
| |
| |
| def test1(*args, **kwargs): |
| print(args) |
| print(kwargs) |
| print('session设置值了') |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| https://www.cnblogs.com/liuqingzheng/articles/9803403.html |
| |

1.2 django信号
| Model signals |
| pre_init |
| post_init |
| pre_save |
| post_save |
| pre_delete |
| post_delete |
| m2m_changed |
| class_prepared |
| Management signals |
| pre_migrate |
| post_migrate |
| Request/response signals |
| request_started |
| request_finished |
| got_request_exception |
| Database Wrappers |
| connection_created |
| |
| |
| |
| |
| |
| 1 写一个函数 |
| def callBack(*args, **kwargs): |
| print(args) |
| print(kwargs) |
| 2 绑定信号 |
| |
| post_save.connect(callBack) |
| |
| from django.db.models.signals import pre_save |
| from django.dispatch import receiver |
| @receiver(pre_save) |
| def my_callback(sender, **kwargs): |
| print("对象创建成功") |
| print(sender) |
| print(kwargs) |
| 3 等待触发 |
2 flask-script
| |
| python manage.py runserver |
| 。。。 |
| |
| |
| |
| Flask==2.2.2 |
| Flask_Script==2.0.3 |
| |
| |
| |
| -安装:pip3.8 install flask-script |
| -修改代码: |
| from flask_script import Manager |
| manager=Manager(app) |
| manager.run() |
| -用命令启动 |
| python manage.py runserver |
| |
| |
| |
| |
| |
| @manager.command |
| def custom(arg): |
| |
| print(arg) |
| |
| |
| @manager.option('-n', '--name', dest='name') |
| @manager.option('-u', '--url', dest='url') |
| def cmd(name, url): |
| |
| |
| print(name, url) |
| |
| |
| |
| |
| |
| |
3 sqlalchemy 快速使用
| |
| |
| |
| |
| |
| |
| |
| pip3.8 install sqlalchemy |
| |
| |
| SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件 |
| pymysql |
| mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>] |
| |
| cx_Oracle |
| oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...] |
| |
| 更多:http://docs.sqlalchemy.org/en/latest/dialects/index.html |
4 sqlalchemy介绍和快速使用
4.1 原生操作的快速使用
| |
| |
| |
| |
| from sqlalchemy import create_engine |
| |
| engine = create_engine( |
| "mysql+pymysql://root@127.0.0.1:3306/cnblogs", |
| max_overflow=0, |
| pool_size=5, |
| pool_timeout=30, |
| pool_recycle=-1 |
| ) |
| |
| conn = engine.raw_connection() |
| cursor=conn.cursor() |
| cursor.execute('select * from aritcle') |
| print(cursor.fetchall()) |
5 创建操作数据表
| |
| from sqlalchemy import create_engine |
| import datetime |
| from sqlalchemy.ext.declarative import declarative_base |
| from sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime, UniqueConstraint, Index |
| |
| |
| Base = declarative_base() |
| |
| |
| |
| class User(Base): |
| |
| id = Column(Integer, primary_key=True) |
| name = Column(String(32), index=True, nullable=False) |
| email = Column(String(32), unique=True) |
| |
| ctime = Column(DateTime, default=datetime.datetime.now) |
| |
| |
| |
| __tablename__ = 'users' |
| |
| |
| __table_args__ = ( |
| UniqueConstraint('id', 'name', name='uix_id_name'), |
| Index('ix_id_name', 'name', 'email'), |
| ) |
| |
| |
| class Book(Base): |
| __tablename__ = 'books' |
| id = Column(Integer, primary_key=True) |
| name = Column(String(32)) |
| |
| |
| |
| |
| engine = create_engine( |
| "mysql+pymysql://root@127.0.0.1:3306/aaa", |
| max_overflow=0, |
| pool_size=5, |
| pool_timeout=30, |
| pool_recycle=-1 |
| ) |
| |
| |
| Base.metadata.create_all(engine) |
| |
| |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现