目录
背景
第一部分 第一个项目
第二部分 总结
参考文献及资料
背景
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
- ORM 框架主要是根据
类和数据库表
之间的映射关系,帮助程序员自动实现对象与数据库中数据之间的互相转化
第一部分 ORM框架
https://blog.51cto.com/u_3664660/3217110
ORM(Object Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,简单点说就是将数据库里面的一条数据映射成一个对象,要对某条数据增删改查时直接操作对应的对象即可。这样带来的好处是不言而喻的,比如要insert一条记录,原始的做法是这样:
1 | INSERT INTO `user` (`id`, `account`, `password`) |
复制
这样做会有一些问题:
- 手写SQL很费时,遇到几十上百个字段的表,一句insert要耗费半天精力。
- 每次都要看着数据库客户端,不然属性名称没法写。
- 容易把字段的类型弄错,varchar类型的属性传入了int。
- 容易写出SQL注入漏洞。
第二部分 sqlalchemy
使用
https://blog.csdn.net/aimill/article/details/81531499
https://www.cnblogs.com/dachenzi/p/10569495.html
https://blog.csdn.net/fuchen58/article/details/81099711
2.1 数据库类型
SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作.
1 | MySQL-Python |
https://www.jianshu.com/p/f28304e0e3a7
1 | from sqlalchemy import create_engine,Table,Column,Integer,String,MetaData,ForeignKey |
第三部分 使用
https://www.html.cn/script/python/216427.html
https://www.cnblogs.com/ccorz/p/5711955.html
案例:
https://www.pythonsheets.com/notes/python-sqlalchemy.html
https://www.jianshu.com/p/5832c79cb9e1
第四部分 事务管理
SQLAlchemy 的 session 是用于管理数据库操作的一个像容器一样的东西. 模型实例对象本身独立存在, 而要让其修改(创建)生效, 则需要把它们加入某个 session 。同时你也可以把模型实例对象从 session 中去除。
被 session 管理的实例对象:
session.commit() 直接将数据库内存中的数据提交到数据库,此操作会内部调用session.flush(),其余的事务可以访问最新的数据;
session.rollback() 是回滚当前事务的变更数据操作;
session.flush() 的作用是在事务管理内与数据库发生交互, 对应的实例状态被反映到数据库,比如自增 ID 被填充上值,但是数据库中当前事务的数据值并未更新上;相当于预提交,等于提交到数据库内存,还未写入数据库文件;deletions and modifications to the database as INSERTs, DELETEs, UPDATE;
session.merge(obj) 查询更新操作;就是更新之前先查询,如果没有自动插入;
参考文献及资料
1、官网介绍:https://www.sqlalchemy.org/;https://docs.sqlalchemy.org/en/14/dialects/index.html