目录
python数据库编程的步骤
- 引入Python引擎包:比如import PsyCopg语句用于为PostgreSQL 操作做准备
- 连接数据库:使用引擎包的conne方法连接物理数据库,通常在本步骤中需要输入数据库的IP地址,端口,数据库名, 数据库的用户和密码。对于SQLite和Excel等文件数据库,本步骤需要给出文件名
- 获取游标:在DB-API规范中,游标:cursor用于执行SQL命令并且管理查询的数据集
- 执行SQL命令,将SQL命令传给游标执行,并解析返回的结果,本步骤可以多次进行
- 提交和回滚事务:在执行DML类的SQL语句时,数据库引擎会自动启动新事务,在一系列的操作完成之后,可以提交或者回滚当前事务。
- 关闭游标:完成SQL操作后关闭游标
- 关闭数据库连接:关闭Python客户端和数据库服务器的连接。
ORM编程
- 上述内容是通过SQL语句直接和数据库打交道,直接使用命令操作数据库
- ORM技术:是一种与关系数据库进行交互的技术
- ORM: object-relational Mapping:对象关系映射,它的作用是在关系型数据库(如mysql, pg等)和业务实体对象之间做一个映射,起到桥梁的作用,这样开发者无需直接使用命令操作数据库,值需要操作对象的属性和方法,实现面向对象编程。
- ORM必须具备三个基本能力:映射技术,CRUD操作, 缓存优化
ORM三个基本能力
- 映射技术
a.数据类型映射:将数据库的类型映射为编程语言自身的类型,数据类型映射的能力解决了由数据库表列(Column)类型向编程语言转换的问题。比如:SQLAlchemy中定义了一系列的数据类型,SmallInteger, Float, Time等,用于对应数据库中的类型。
b. 类映射:将数据表定义映射为编程语言自身的类,这样,数据表中每一条记录就可以映射为一个编程语言自身的对象。因为数据表的定义本身在每个业务场景不一样,所以需要开发者通过配置文件或代码文件的方式类明确类的映射, 在SQLAlchemy中,开发者通过定义继承自declarative_base()返回的类型来实现类映射
c. 关系映射: 将数据库中基于外键的关系连接转换为编程语言中基于对象引用的关系连接;在Sqlalchemy 中通过数据表类定义relationship()字段,使开发者能够制定数据表之间的连接关系。 - CRUD操作
C: 增加:create,
R: 读取:Retrieve: 重新得到数据
U: 更新:Update
D: 删除: delete
在SQL中通过的是Insert, select, Update, Delete四种语句实现CRUD的。 - 缓存优化
a. 将从数据库中查询到的数据, 以类对象的形式操作到内存中,以便之后再用时随时读取
b,. 在真正需要查询结果时才执行数据库的select操作,而不是ORM查询命令执行的时候查询数据库。
python的ORM框架
- SQLAlchemy
- Diango ORM
- Peewee
- Storm
- SQLObject
总结
ORM 在开发者和数据库之间建立了一个中间层,是的开发者不需要直接和复杂的数据库语句打交道,即使在需要切换数据库的时候,也不需要过多的修改数据库语句,并且可以使用面向对象的高级特性。