1.SQLAlchemy 是什么?
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。
create_engine
详细介绍pool
https://hk.saowen.com/a/cc5f500ae9fa5cae4b0e90a54a49614f8937763da26914ec25beb2dc097ba70b
SqlAlchemy 中操作数据库时session和scoped_session的区别
https://www.cnblogs.com/ctztake/p/8277372.html
原生session:
由于无法提供线程共享功能,所以在开发时要注意,要给每个线程都创建自己的session
打印sesion可知他是sqlalchemy.orm.session.Session的对象
scoped_session
优点:支持线程安全,为每个线程都创建一个session:
两种方式:通过本地线程Threading.Local()和创建唯一标识的方法(参考flask请求源码)
[Python]threading local 线程局部变量
https://blog.csdn.net/qi1840439776/article/details/70402341
[SALALchemy Session与scoped_session的源码分析
https://www.cnblogs.com/1a2a/p/8278698.html
连接池原理
数据库连接池,本地线程,上下文管理
https://cloud.tencent.com/developer/article/1028230
https://sunnyingit.github.io/book/section_python/SQLalchemy-session.html
commit和flush的区别
https://blog.csdn.net/zmx729618/article/details/51455051
merge 和update区别
使用merge方法,如果数据库中有该记录,则更新该记录,如果不存在该记录,则进行insert操作。
使用update的话,会无条件执行update。
也就是说如果数据库中有该记录的话,merge和update是一样的。