本文整理自网络,侵删。
前面介绍过vSQLAlchemy中的 Engine 和 Connection,这两个对象用在row SQL (原生的sql语句)上操作,而 ORM(Object Relational Mapper)则是一种用面向对象的思维来操作表数据的技术。所谓ORM 就是Python 对象到数据表的一种映射关系。
以前 SQLAlchemy 是怎么把Python对象和数据库中表里面的每条记录进行映射的呢?通过一个mapping函数
先来看个例子:
from sqlalchemy import Table, MetaData, Column, Integer, String, from sqlalchemy.orm import mapper # 数据库的元数据,你可以认为它是一个容器,装载了所有的表结构 metadata = MetaData() # 数据库中的news_article表 article = Table("news_article", metadata, Column("id", Integer, primary_key=True), Column("title", String) ) # 这是一个普通的Article类 class Article: def __init__(self, title): self.title = title # 通过mapper函数进行映射关联 mapper(Article, article)
关联后怎么使用呢?看例子:
from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() # 通过Artcile类来查询id==4554的记录,这完全是用面向对象的方式执行sql了 # 返回结果就是Article的实例对象 result = session.query(Article).filter(Article.id==4554).first() print(result.id) # 4554 print(result.title) # xxxxxxxxx
mapper 函数进行映射后,通过query查询返回的结果,会自动将返回结果构造成一个Article对象,并拥有了id 属性,这就是ORM的魔力所在。
相关阅读 >>
.net6跨服务器联表查询操作mysql、oracle、sqlserver等相互联表
scp远程vps快速搬家和wdcp升级php5.3安装memcached和eaccelerator教程
Sqlite 入门教程四 增删改查 有讲究
navicat图形化界面之navicatpremium12安装与使用教程
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。