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 中的lambda函数介绍

    关于Python中的lambda函数,我可以给您提供一个详细攻略,以增加大家对它的了解。 1. 什么是lambda函数 lambda函数,也称作匿名函数,是一种可以在一行内定义、声明并使用的小型函数。与def语句定义的函数不同,lambda函数不需要函数名、return语句以及函数定义。 lambda函数主要用于编写需要一次性使用的代码段,比如作为函数参数进…

    python 2023年6月3日
    00
  • python实现nao机器人手臂动作控制

    让我为你详细讲解 “Python实现Nao机器人手臂动作控制” 的完整攻略。 概览 Nao机器人是一款流行的图形化机器人,其手臂是该机器人的核心组件之一。在本教程中,我们将展示如何使用Python编程语言实现Nao机器人手臂的运动控制。 步骤1: 安装Python SDK 在开始之前,我们需要安装Nao机器人的Python SDK,这可以在Aldebaran…

    python 2023年5月23日
    00
  • python人工智能算法之线性回归实例

    Python人工智能算法之线性回归实例 线性回归是一种常用的机器学习算法,它可以用于预测连续型变量值。本文将介绍如何使用Python实现线性回归算,并提供两个示例说明。 线性回归算法原理 线性回归算法的基本原理是:通过对已知数据进行拟合,建立一个线性模型,然后使用该模型对未知数据进行预测。性回归算法的核心是寻找最佳拟合直线,使得预测值与实际值之间的误差最小。…

    python 2023年5月14日
    00
  • python中count函数简单用法

    下面是关于Python中count函数的详细讲解。 什么是count函数 Python中的count函数是一种列表方法,可以用来统计一个元素在列表中出现的次数。 计算列表中元素出现的次数 下面是一个简单的例子,演示如何使用count函数统计列表中某个元素出现的次数: mylist = [‘apple’, ‘banana’, ‘banana’, ‘orange…

    python 2023年6月3日
    00
  • 通过代码实例了解Python sys模块

    下面是关于“通过代码实例了解Python sys模块”的完整攻略。 简介 Python的sys模块提供了与Python解释器交互的函数和变量。这个模块通常用于访问命令行参数、查看Python解释器的版本、与操作系统交互等方面。下面我们通过几个示例来看看该模块的具体用法。 获取命令行参数 有时需要在程序中获取命令行参数,而sys模块提供了一个名为argv的列表…

    python 2023年6月2日
    00
  • python中reader的next用法

    Python中的csv模块是处理CSV(Comma Separated Value,逗号分隔值)数据文件的常用工具。它的reader类提供了一系列方法用于逐行读取CSV文件中的数据。其中,next()方法可以读取并返回文件的下一行数据,返回值为一个列表,列表中包含了该行数据的各个字段。 下面是next()方法的基本使用方式: import csv # 打开C…

    python 2023年6月3日
    00
  • 什么是python的必选参数

    Python的必选参数 在Python的函数中,必选参数是指在函数定义时需要定义的参数,调用函数时需要传入的参数,如果没有传入相应的参数,则会抛出TypeError错误。本文将为你详细讲解什么是Python的必选参数。 定义 在函数定义时,可以通过在函数名后面加上括号,传入必选参数,如下所示: def function(a, b, c): pass 上述函数…

    python 2023年6月3日
    00
  • python实现读取excel表格详解方法

    Python是一种简单易学的编程语言,被广泛用于数据分析、机器学习、Web开发等领域。读取Excel表格是数据分析的一个重要任务,Python中提供了多种库实现Excel表格读取,在本文中我将为大家详细介绍如何使用Python读取Excel表格的方法。 Step 1: 安装依赖库 Python中有多个第三方库可以通过Python程序操作Excel文件,包括o…

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