flask使用SQLAlchemy组对数据库操作
两种连接方式:
第二种方式就是利用threading.local()为每个线程开辟一个自己独立的存储空间
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session from models import Users engine = create_engine( "mysql+pymysql://root:123456@127.0.0.1:3306/userinfo?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建的连接 pool_size=5, # 连接池大小 pool_timeout=30, # 池中没有线程最多等待的时间,否则报错 pool_recycle=-1 # 多久之后对线程池中的线程进行一次连接的回收(重置) ) SessionFactory = sessionmaker(bind=engine) def task(): session = SessionFactory() ret = session.query(Users).all() print(ret) # 将连接交还给连接池 session.close() from threading import Thread for i in range(20): t = Thread(target=task) t.start()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session from models import Users engine = create_engine( "mysql+pymysql://root:123456@127.0.0.1:3306/userinfo?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建的连接 pool_size=5, # 连接池大小 pool_timeout=30, # 池中没有线程最多等待的时间,否则报错 pool_recycle=-1 # 多久之后对线程池中的线程进行一次连接的回收(重置) ) SessionFactory = sessionmaker(bind=engine) session = scoped_session(SessionFactory) def task(): # session = SessionFactory() ret = session.query(Users).all() print(ret) # 将连接交还给连接池 session.remove() # session.close() from threading import Thread for i in range(20): t = Thread(target=task) t.start()
1、介绍、基本配置
2、创建表、删除表
3、ORM操作,增删改查,连表、分组、排序、执行原生sql语句、一对多与多对多中,基于relationship类字段的查询和添加