昨日内容回顾
# 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
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