ORM学习笔记

数据库表是一个二维表,包含多行多列。把一个表的内容用Python的数据结构表示出来的话,能够用一个list表示多行,list的每个元素是tuple,表示一行记录,好比,包含id和name的user表。[('1','A'),('2','B'),('3','C')] Python的DB-API返回的数据结构就是像上面这样表示的。 可是用tuple表示一行很难看出表的结构。若是把一个tuple用class实例来表示,就能够更容易地看出表的结构来: class User(object): def init(self,id,name): self.id=id self.name=name [ User('1','A'), User('2','B'), User('3','C') ] 这就是传说中的ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上。是否是很简单? 可是由谁来作这个转换呢?因此ORM框架应运而生。 在Python中,最有名的ORM框架是SQLAlchemy。咱们来看看SQLAlchemy的用法。 第一步,导入SQLAlchemy,并初始化DBSession。 create_engine()用来初始化数据库链接。SQLAlchemy用一个字符串表示链接信息: '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' 你只须要根据须要替换掉用户名、口令等信息便可。 下面,咱们看看如何向数据库表中添加一行记录。 因为有了ORM,咱们向数据库表中添加一行记录,能够视为添加一个User对象。 可见,关键是获取session,而后把对象添加到session,最后提交并关闭。Session对象可视为当前数据库链接。 如何从数据库表中查询数据呢?有了ORM,查询出来的能够再也不是tuple,而是User对象。SQLAlchemy提供的查询接口。 可见,ORM就是把数据库表的行与相应的对象创建关联,互相转换。 因为关系数据库的多个表还能够用外键实现一对多、多对多等关联,相应地,ORM框架也能够提供两个对象之间的一对多、多对多等功能。 当咱们查询一个User对象时,该对象的books属性将返回一个包含若干个Book对象的list。 小结 ORM框架的做用就是把数据库表的一行记录与一个对象互相作自动转换。 正确使用ORM的前提是了解关系数据库的原理。数据库

相关文章
相关标签/搜索