python SQLAlchemy的Mapping与Declarative详解

接下来我将详细讲解Python SQLAlchemy的Mapping与Declarative。

什么是SQLAlchemy

SQLAlchemy是一个Python编程语言下的ORM库和SQL工具包。

ORM(Object Relational Mapping)是一种编程技术,用于将数据库和面向对象编程语言之间的数据映射,实现面向对象的编程。SQLAlchemy基于这种技术,提供了一种将对象关系转化为SQL语言的方法,从而实现数据库的操作。

SQLAlchemy的Mapping与Declarative

SQLAlchemy提供了两种ORM编程模型:Mapping和Declarative。

Mapping

Mapping是最初版本的ORM编程模型,它的实现方式是通过将数据库的表和Python中的类进行映射,这样,使用Python类就可以访问数据库中的表数据。

在使用Mapping时,我们需要先建立与数据库的连接,通过metaclass方式定义类,在类中描述映射关系,进行数据查询和更改。

以下是一个简单的Mapping代码示例:

from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

在这个示例中,我们通过declarative_base函数创建了一个基类Base,所有的映射类都需要继承自这个基类。

类中,使用了__tablename__属性指定表名,使用Column函数定义列,设置列的数据类型。

当定义好了映射类之后,我们就可以创建一个与数据库的会话并使用该映射类进行数据的查询和更改:

engine = create_engine('sqlite:///test.db', echo=True)
Base.metadata.create_all(engine)

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

user = User(name='test', age=20)
session.add(user)
session.commit()

query = session.query(User).filter_by(name='test')
print(query.first())

在这个示例中,create_engine函数创建了与SQLite数据库的连接,并使用echo参数打开调试信息输出。metadata.create_all函数将映射类创建的表生成到数据库中。

在创建会话之后,使用映射类创建一个新的用户对象,并将其加入到会话中进行提交。最后,通过session.query函数执行与数据库的查询并打印结果。

Declarative

Declarative是SqlAlchemy的高级ORM模型,它对映射类进行了封装,使用类的继承机制实现对关系的描述,支持更加简单的API、更加直观的查询语句和更加灵活的关系表达方式。

以下是一个简单的Declarative代码示例:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

engine = create_engine('sqlite:///test.db', echo=True)
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

user = User(name='test', age=20)
session.add(user)
session.commit()

query = session.query(User).filter_by(name='test')
print(query.first())

与Mapping相比,Declarative将表的声明与映射类进行了绑定,使得操作更加简单。在创建映射类的时候,只需继承自declarative_base函数生成的基类Base,将类的表名和列定义在类中即可。

总结

本文主要介绍了Python SQLAlchemy的Mapping和Declarative两种ORM编程模型,通过示例代码演示了两种模型的使用方式,包括连接数据库、定义映射类、执行增、删、改、查、批量插入、事务等操作。

感谢您的阅读,如果您还有其他问题,请随时提出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python SQLAlchemy的Mapping与Declarative详解 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • python爬虫设置每个代理ip的简单方法

    下面是 “Python爬虫设置每个代理IP的简单方法” 的完整攻略。 1. 选取代理IP库 我们首先需要选择一个代理IP库来获取IP地址。推荐使用快代理或西刺代理等代理IP库。这些代理IP库提供了免费的IP地址列表,但是稳定性和速度可能不如收费的IP代理服务。 2. 配置请求头及代理设置 在使用requests库进行页面解析时,可以通过设置请求头和代理参数来…

    python 2023年6月3日
    00
  • Python决策树分类算法学习

    Python决策树分类算法学习 决策树是一种常用的分类算法,它可以将数据集划分为多个类别。在本攻略中,我们将介绍如何使用Python实现决策树分类算法。 步骤1:导入相关库 在使用Python实现决策树分类算法之前,我们需要导入相关的库。在本攻略中,我们将使用NumPy库和Matplotlib库处理数据和可视化结果,使用sklearn库中DecisionTr…

    python 2023年5月14日
    00
  • 基于Python实现一个春节倒计时脚本

    让我们详细讲解如何基于Python实现一个春节倒计时脚本。 1. 确定倒计时目标时间 首先,我们需要确定倒计时的目标时间。春节的日期通常是不固定的,但是也可以通过查询公历和农历转换函数来获得。我们可以使用Python内置的datetime和time模块来处理日期和时间。下面是一个示例代码,可获取下一个春节的日期,也可以根据需要调整目标时间。 import d…

    python 2023年6月2日
    00
  • 用python实现一个文件搜索工具

    绝大多数操作系统的文件系统都有一个通用搜索功能,但是有时我们需要高度自定义的搜索功能,这时可以用Python编写一个文件搜索工具。 1. 问题分析 无论是什么样的搜索工具,其实现的基本步骤大致相同: 搜寻起点 搜寻过滤规则 搜寻输出 这些步骤中, 发现一个文件搜索工具的最基本要求就是依据用户的输入对文件进行搜寻。也就是说我们需要输入:搜寻路径、搜寻关键词。我…

    python 2023年6月2日
    00
  • Python如何快速上手? 快速掌握一门新语言的方法

    Python如何快速上手:快速掌握一门新语言的方法 学习Python的前置知识 在学习Python之前,有一些前置知识是必要的,如基础的编程概念和算法思想。如果你没有这些基础,建议先学习一下基础的编程知识,掌握C语言和数据结构、算法等基础课程。 Python学习资源 Python学习资源丰富,包括网络课程、电子书、官方文档和社区等。以下是一些学习Python…

    python 2023年5月19日
    00
  • Python编程之字符串模板(Template)用法实例分析

    Python编程之字符串模板(Template)用法实例分析 什么是字符串模板(Template)? Python中的字符串模板是一种通过简单的替换操作来生成最终文本的工具。使用字符串模板的好处是可以分离代码和文本,让代码更加易于修改和维护。字符串模板是一个支持占位符的文本,占位符可以被实际的值替换,占位符的类型有简单占位符和命名占位符。 简单占位符示例 以…

    python 2023年6月5日
    00
  • python将文本转换成图片输出的方法

    如何将文本转换成图片输出是一个比较常见且实用的需求。Python提供了丰富的库和模块以实现这个过程,常见的库包括Pillow和OpenCV等。下面将介绍使用Pillow库的详细攻略以及两个示例。 安装Pillow库 使用Pillow库前,需要先安装Pillow库。在终端(Windows下可用cmd或PowerShell代替)中使用以下命令进行安装: pip …

    python 2023年6月5日
    00
  • Python集合set()使用的方法详解

    Python集合set()使用的方法详解 什么是集合set() python中的集合是一种无序的不重复元素的集合,它是通过大括号{}或set()函数创建的。 创建一个集合 可以通过下述两种方式来创建一个集合: 使用大括号{}: my_set = {1, 2, 3} print(my_set) 输出结果: {1, 2, 3} 使用set()函数: my_set…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部