【华三】不懂链路聚合?看这篇就够了!华三配置详解

背景

华三链路聚合(LinkAggregation),通过将多条以太网物理链路捆绑在一起形成一条以太网逻辑链路,实现增加链路带宽的目的,同时这些捆绑在一起的链路通过相互动态备份,可以有效地提高链路的可靠性。

随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求。在传统技术中,常用更换高速率的单板或更换支持高速率单板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。
Link Aggregation采用链路聚合技术,可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口,达到增加链路带宽的目的。在实现增大带宽目的的同时,Link Aggregation采用备份链路的机制,可以有效的提高设备之间链路的可靠性。
如果只是单纯的在交换机上添加多条链路,而不启用链路聚合,那其实和一条链路没区别,因为交换机有STP进行防环操作,多条链路会被逻辑阻塞,就留下一条链路进行业务传输而已,所以就有了链路聚合技术。将多条链路逻辑成一条逻辑链路,STP也就只能看到一条逻辑链路而已。
在这里插入图片描述

链路聚合基本概念

聚合组和聚合接口的类型

二层聚合组/二层聚合接口

二层聚合组的成员端口全部为二层以太网接口,其对应的聚合接口称为二层聚合接口。

三层聚合组/三层聚合接口

三层聚合组的成员端口全部为三层以太网接口,其对应的聚合接口称为三层聚合接口。在创建了三层聚合接口之后,还可继续创建该三层聚合接口的子接口,即三层聚合子接口。三层聚合子接口处理与该子接口编号相同的VLAN的报文。

聚合接口特性

聚合接口的速率等于所有选中端口的速率之和
聚合接口的双工模式则与选中端口的双工模式相同

聚合接口

参考端口

参考端口本地有效,具有抢占性。
参考端口从本端的成员端口中选出,其操作Key和属性类配置将作为同一聚合组内的其他成员端口的参照,只有操作Key和属性类配置与参考端口一致的成员端口才能被选中。
选举规则端口ID :端口优先级(默认32768)+端口编号越小越优

成员端口

① 选中(Selected)状态:
此状态下的成员端口可以参与数据的转发,处于此状态的成员端口称为“选中端口”。

② 非选中(Unselected)状态:
此状态下的成员端口不能参与数据的转发,处于此状态的成员端口称为“非选中端口”。

③ 独立(Individual)状态:
此状态下的成员端口可以作为普通物理口参与数据的转发。聚合接口配置为边缘端口时,如果成员端口在经过LACP(Link Aggregation Control Protocol,链路聚合控制协议)超时时间之后未收到LACP报文,则该成员端口会被置为该状态

操作Key

操作Key是系统在进行链路聚合时用来表征成员端口聚合能力的一个数值,它是根据成员端口上的一些信息(包括该端口的速率、双工模式等)的组合自动计算生成的,这个信息组合中任何一项的变化都会引起操作Key的重新计算。
在同一聚合组中,所有的选中端口都必须具有相同的操作Key。

成员端口的配置分类

协议类配置-第一类配置

不参与操作Key计算的配置信息。
包含的配置内容有MAC地址学习(MVRP)、生成树(MSTP)等。

属性配置-第二类配置

在聚合组中,只有与对应聚合接口的属性类配置完全相同的成员端口才能够成为选中端口。

参与操作Key计算的配置信息。
包含Vlan配置(端口上允许通过的VLAN、端口缺省VLAN、端口的链路类型等等)、VLAN映射、QinQ配置、端口隔离配置

华三链路聚合模式

01.静态聚合模式

一旦配置好后,端口的选中/非选中状态就不会受网络环境的影响,本地有效,不会被对端影响,只要自己有配置,聚合口就会up,比较稳定。

02.动态聚合模式

通过LACP协议实现,能够根据对端和本端的信息调整端口的选中/非选中状态,比较灵活。
LACP协议工作模式分为ACTIVE和PASSIVE两种。一端必须为ACTIVE,才能动态建立聚合组。
LACP超时时间是指成员端口等待接收LACPDU的超时时间,LACP超时时间分为短超时(3秒)和长超时(90秒)两种。在LACP超时时间+3秒之后(即6秒或93秒之后),如果本端成员端口仍未收到来自对端的LACPDU,则认为对端成员端口已失效。

聚合边缘接口

在网络设备与服务器等终端设备相连的场景中,当网络设备配置了动态聚合模式,而终端设备未配置动态聚合模式时,聚合链路不能成功建立。

网络设备与该终端设备相连多条链路中只能有一条作为普通链路正常转发报文,因而链路间也不能形成备份,当该普通链路发生故障时,可能会造成报文丢失。

若要求在终端设备未配置动态聚合模式时,该终端设备与网络设备间的链路可以形成备份。

可通过配置网络设备与终端设备相连的聚合接口为聚合边缘接口,使该聚合组内的所有成员端口都作为普通物理口转发报文,从而保证终端设备与网络设备间的多条链路可以相互备份,增加可靠性。

当终端设备完成动态聚合模式配置时,其聚合成员端口正常发送LACP报文后,网络设备上符合选中条件的聚合成员端口会自动被选中,从而使聚合链路恢复正常工作。

聚合负载分担类型

1 逐流负载分担

按照报文的源/目的MAC地址、源/目的服务端口、入端口、源/目的IP地址或MPLS标签中的一种或某几种的组合区分流,使属于同一数据流的报文从同一条成员链路上通过。

2 逐包负载分担

不区分数据流,而是以报文为单位,将流量分担到不同的成员链路上进行传输。

3 按照报文类型

如二层协议报文、IPv4报文、IPv6报文、MPLS报文等,自动选择所采用的聚合负载分担类型。

4 弹性负载分担

在链路增加或减少时,尽量少的切换链路上的流量,只有部分流量进行链路切换。

实验准备

实验环境:HCL 5.7.1
实验设备
交换机:S6850
PC:

实验目的
让交换机实现链路聚合,提高带宽

实验配置

在这里插入图片描述

PC1

在这里插入图片描述

PC2

在这里插入图片描述

二层静态聚合

SW1

<H3C>system-view 
[H3C]sysname SW1

# 关闭日志弹出
[SW1]undo info-center enable      
Information center is disabled.

# 创建VLAN 10,并将vlan10划分进g1/0/4端口
[SW1]vlan 10
[SW1-vlan10]quit
[SW1]int g1/0/4
[SW1-GigabitEthernet1/0/4]port link-type access 
[SW1-GigabitEthernet1/0/4]port access vlan 10
[SW1-GigabitEthernet1/0/4]quit

# 创建二层聚合接口1
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]quit
# 将端口g1/0/1 - g1/0/3一起加入到聚合组1[SW1]int range g1/0/1 to g1/0/3
[SW1-if-range]port link-aggregation group 1
[SW1-if-range]quit

# 配置二层聚合接口1为Trunk端口,并允许VLAN 10的报文通过。
# 会在二层聚合口1配置的话,会和物理接口同步,如下
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]port link-type trunk 
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW1-Bridge-Aggregation1]port trunk permit vlan 10
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW1-Bridge-Aggregation1]quit

SW2

[SW2]undo info-center enable 
Information center is disabled.

# 创建VLAN 10,并将vlan10划分进g1/0/4端口
[SW2]vlan 10
[SW2-vlan10]quit
[SW2]int g1/0/4
[SW2-GigabitEthernet1/0/4]port link-type access 
[SW2-GigabitEthernet1/0/4]port access vlan 10
[SW2-GigabitEthernet1/0/4]quit

# 创建二层聚合接口1
[SW2]int Bridge-Aggregation 1
[SW2-Bridge-Aggregation1]quit

# 将端口g1/0/1 - g1/0/3一起加入到聚合组1[SW2]int range g1/0/1 to g1/0/3
[SW2-if-range]port link-aggregation group 1
[SW2-if-range]quit

# 配置二层聚合接口1为Trunk端口,并允许VLAN 10的报文通过。
# 会在二层聚合口1配置的话,会和物理接口同步,如下
[SW2]int Bridge-Aggregation 1
[SW2-Bridge-Aggregation1]port link-type trunk 
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW2-Bridge-Aggregation1]port trunk permit vlan 10
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW2-Bridge-Aggregation1]quit

查看SW1所有聚合组的详细信息

[SW1]display link-aggregation verbose
在这里插入图片描述

查看SW2所有聚合组的详细信息

[SW2]display link-aggregation verbose
在这里插入图片描述

PC1 Ping PC2

在这里插入图片描述

二层动态聚合

SW1

<H3C>system-view 
[H3C]sysname SW1

# 关闭日志弹出
[SW1]undo info-center enable      
Information center is disabled.

# 创建VLAN 10,并将vlan10划分进g1/0/4端口
[SW1]vlan 10
[SW1-vlan10]quit
[SW1]int g1/0/4
[SW1-GigabitEthernet1/0/4]port link-type access 
[SW1-GigabitEthernet1/0/4]port access vlan 10
[SW1-GigabitEthernet1/0/4]quit


# 创建二层聚合接口1,并配置该接口为动态聚合模式。
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]link-aggregation mode dynamic 
[SW1-Bridge-Aggregation1]quit

# 将端口g1/0/1 - g1/0/3一起加入到聚合组1[SW1]int range g1/0/1 to g1/0/3
[SW1-if-range]port link-aggregation group 1
[SW1-if-range]quit

# 配置二层聚合接口1为Trunk端口,并允许VLAN 10的报文通过。
# 会在二层聚合口1配置的话,会和物理接口同步,如下
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]port link-type trunk 
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW1-Bridge-Aggregation1]port trunk permit vlan 10
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW1-Bridge-Aggregation1]quit

SW2

[SW2]undo info-center enable 
Information center is disabled.

# 创建VLAN 10,并将vlan10划分进g1/0/4端口
[SW2]vlan 10
[SW2-vlan10]quit
[SW2]int g1/0/4
[SW2-GigabitEthernet1/0/4]port link-type access 
[SW2-GigabitEthernet1/0/4]port access vlan 10
[SW2-GigabitEthernet1/0/4]quit

# 创建二层聚合接口1,并配置该接口为动态聚合模式。
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]link-aggregation mode dynamic 
[SW1-Bridge-Aggregation1]quit

# 将端口g1/0/1 - g1/0/3一起加入到聚合组1[SW2]int range g1/0/1 to g1/0/3
[SW2-if-range]port link-aggregation group 1
[SW2-if-range]quit

# 配置二层聚合接口1为Trunk端口,并允许VLAN 10的报文通过。
# 会在二层聚合口1配置的话,会和物理接口同步,如下
[SW2]int Bridge-Aggregation 1
[SW2-Bridge-Aggregation1]port link-type trunk 
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW2-Bridge-Aggregation1]port trunk permit vlan 10
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW2-Bridge-Aggregation1]quit

查看SW1所有聚合组的详细信息

[SW1]display link-aggregation verbose
在这里插入图片描述

查看SW2所有聚合组的详细信息

[SW2]display link-aggregation verbose
在这里插入图片描述

PC1 Ping PC2

在这里插入图片描述

二层聚合负载分担

SW1

<H3C>system-view 
[H3C]sysname SW1

# 关闭日志弹出
[SW1]undo info-center enable      
Information center is disabled.

# 创建VLAN 10,并将vlan10划分进g1/0/4端口
[SW1]vlan 10
[SW1-vlan10]quit
[SW1]int g1/0/4
[SW1-GigabitEthernet1/0/4]port link-type access 
[SW1-GigabitEthernet1/0/4]port access vlan 10
[SW1-GigabitEthernet1/0/4]quit

# 通过在聚合组1上按照源MAC地址进行聚合负载分担
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]link-aggregation load-sharing mode source-mac 
[SW1-Bridge-Aggregation1]quit

# 将端口g1/0/1 - g1/0/3一起加入到聚合组1[SW1]int range g1/0/1 to g1/0/3
[SW1-if-range]port link-aggregation group 1
[SW1-if-range]quit

# 配置二层聚合接口1为Trunk端口,并允许VLAN 10的报文通过。
# 会在二层聚合口1配置的话,会和物理接口同步,如下
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]port link-type trunk 
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW1-Bridge-Aggregation1]port trunk permit vlan 10
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW1-Bridge-Aggregation1]quit

SW2

[SW2]undo info-center enable 
Information center is disabled.

# 创建VLAN 10,并将vlan10划分进g1/0/4端口
[SW2]vlan 10
[SW2-vlan10]quit
[SW2]int g1/0/4
[SW2-GigabitEthernet1/0/4]port link-type access 
[SW2-GigabitEthernet1/0/4]port access vlan 10
[SW2-GigabitEthernet1/0/4]quit

# 通过在聚合组1上按照源MAC地址进行聚合负载分担
[SW1]int Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]link-aggregation load-sharing mode source-mac 
[SW1-Bridge-Aggregation1]quit

# 将端口g1/0/1 - g1/0/3一起加入到聚合组1[SW2]int range g1/0/1 to g1/0/3
[SW2-if-range]port link-aggregation group 1
[SW2-if-range]quit

# 配置二层聚合接口1为Trunk端口,并允许VLAN 10的报文通过。
# 会在二层聚合口1配置的话,会和物理接口同步,如下
[SW2]int Bridge-Aggregation 1
[SW2-Bridge-Aggregation1]port link-type trunk 
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW2-Bridge-Aggregation1]port trunk permit vlan 10
Configuring GigabitEthernet1/0/1 done.
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[SW2-Bridge-Aggregation1]quit

查看SW1所有聚合组的详细信息

[SW1]display link-aggregation verbose
在这里插入图片描述

查看SW2所有聚合组的详细信息

[SW2]display link-aggregation verbose
在这里插入图片描述

查看SW1所有聚合接口所对应聚合组内采用的聚合负载分担类型。

[SW1]display link-aggregation load-sharing mode interface
在这里插入图片描述

PC1 Ping PC2

在这里插入图片描述

三层静态聚合

SW1

# 创建三层聚合接口“1”,并为该接口配置IP地址和子网掩码。
# 默认聚合模式为静态
[SW1]int Route-Aggregation 1
[SW1-Route-Aggregation1]ip address 192.168.100.1 24
[SW1-Route-Aggregation1]quit

# 二层接口是不能加入三层聚合接口组的
# 需要我们手动把二层接口改为三层接口,才能成功加组
[SW1]int g1/0/1
[SW1-GigabitEthernet1/0/1]port link-mode route    # 修改成三层接口
The configuration of the interface will be restored to the default. Continue? [Y/N]:y[SW1-GigabitEthernet1/0/1]port link-aggregation group 1  
[SW1-GigabitEthernet1/0/1]quit

[SW1]int g1/0/2
[SW1-GigabitEthernet1/0/2]port link-mode route 
The configuration of the interface will be restored to the default. Continue? [Y/N]:y
[SW1-GigabitEthernet1/0/2]port link-aggregation group 1
[SW1-GigabitEthernet1/0/2]quit

[SW1]int g1/0/3
[SW1-GigabitEthernet1/0/3]port link-mode route 
The configuration of the interface will be restored to the default. Continue? [Y/N]:y
[SW1-GigabitEthernet1/0/3]port link-aggregation group 1
[SW1-GigabitEthernet1/0/3]quit

SW2

# 创建三层聚合接口“1”,并为该接口配置IP地址和子网掩码。
[SW2]int Route-Aggregation 1
[SW2-Route-Aggregation1]ip address 192.168.100.2 24
[SW2-Route-Aggregation1]quit

# 二层接口是不能加入三层聚合接口组的
# 需要我们手动把二层接口改为三层接口,才能成功加组
[SW2]int range g1/0/1 to g1/0/3
[SW2-if-range]port link-mode route 
[SW2-if-range]port link-aggregation group 1
[SW2-if-range]quit

查看SW1所有聚合组的详细信息

[SW1]display link-aggregation verbose
在这里插入图片描述

查看SW1聚合接口地址

[SW1]dis ip int brief
在这里插入图片描述

查看SW1三层聚合接口能和SW2的三层聚合端口互通

在这里插入图片描述

三层动态聚合

SW1

# 创建三层聚合接口“1”,并为该接口配置IP地址和子网掩码。
# 默认聚合模式为动态LACP模式
[SW1]int Route-Aggregation 1
[SW1-Route-Aggregation1]link-aggregation mode dynamic  ## 设置为动态LACP模式
[SW1-Route-Aggregation1]ip address 192.168.100.1 24
[SW1-Route-Aggregation1]quit

# 二层接口是不能加入三层聚合接口组的
# 需要我们手动把二层接口改为三层接口,才能成功加组
[SW1]int g1/0/1
[SW1-GigabitEthernet1/0/1]port link-mode route    # 修改成三层接口
The configuration of the interface will be restored to the default. Continue? [Y/N]:y[SW1-GigabitEthernet1/0/1]port link-aggregation group 1  
[SW1-GigabitEthernet1/0/1]quit

[SW1]int g1/0/2
[SW1-GigabitEthernet1/0/2]port link-mode route 
The configuration of the interface will be restored to the default. Continue? [Y/N]:y
[SW1-GigabitEthernet1/0/2]port link-aggregation group 1
[SW1-GigabitEthernet1/0/2]quit

[SW1]int g1/0/3
[SW1-GigabitEthernet1/0/3]port link-mode route 
The configuration of the interface will be restored to the default. Continue? [Y/N]:y
[SW1-GigabitEthernet1/0/3]port link-aggregation group 1
[SW1-GigabitEthernet1/0/3]quit

SW2

# 创建三层聚合接口“1”,并为该接口配置IP地址和子网掩码。
[SW2]int Route-Aggregation 1
[SW2-Route-Aggregation1]link-aggregation mode dynamic  ## 设置为动态LACP模式
[SW2-Route-Aggregation1]ip address 192.168.100.2 24
[SW2-Route-Aggregation1]quit

# 二层接口是不能加入三层聚合接口组的
# 需要我们手动把二层接口改为三层接口,才能成功加组
[SW2]int range g1/0/1 to g1/0/3
[SW2-if-range]port link-mode route 
[SW2-if-range]port link-aggregation group 1
[SW2-if-range]quit

查看SW1所有聚合组的详细信息

[SW1]display link-aggregation verbose
在这里插入图片描述

查看SW1聚合接口地址

[SW1]dis ip int brief
在这里插入图片描述

查看SW1三层聚合接口能和SW2的三层聚合端口互通

在这里插入图片描述

三层聚合链路负载分担

SW1

# 创建三层聚合接口“1”,并为该接口配置IP地址和子网掩码。
# 并设置聚合接口“1”以源IP来进行负载分担
[SW1]int Route-Aggregation 1
[SW1-Route-Aggregation1]link-aggregation load-sharing mode source-ip
[SW1-Route-Aggregation1]ip address 192.168.100.1 24
[SW1-Route-Aggregation1]quit

# 二层接口是不能加入三层聚合接口组的
# 需要我们手动把二层接口改为三层接口,才能成功加组
[SW1]int g1/0/1
[SW1-GigabitEthernet1/0/1]port link-mode route    # 修改成三层接口
The configuration of the interface will be restored to the default. Continue? [Y/N]:y[SW1-GigabitEthernet1/0/1]port link-aggregation group 1  
[SW1-GigabitEthernet1/0/1]quit

[SW1]int g1/0/2
[SW1-GigabitEthernet1/0/2]port link-mode route 
The configuration of the interface will be restored to the default. Continue? [Y/N]:y
[SW1-GigabitEthernet1/0/2]port link-aggregation group 1
[SW1-GigabitEthernet1/0/2]quit

[SW1]int g1/0/3
[SW1-GigabitEthernet1/0/3]port link-mode route 
The configuration of the interface will be restored to the default. Continue? [Y/N]:y
[SW1-GigabitEthernet1/0/3]port link-aggregation group 1
[SW1-GigabitEthernet1/0/3]quit

SW

# 创建三层聚合接口“1”,并为该接口配置IP地址和子网掩码。
# 并设置聚合接口“1”以源IP来进行负载分担
[SW1]int Route-Aggregation 1
[SW1-Route-Aggregation1]link-aggregation load-sharing mode source-ip
[SW2-Route-Aggregation1]ip address 192.168.100.2 24
[SW2-Route-Aggregation1]quit

# 二层接口是不能加入三层聚合接口组的
# 需要我们手动把二层接口改为三层接口,才能成功加组
[SW2]int range g1/0/1 to g1/0/3
[SW2-if-range]port link-mode route 
[SW2-if-range]port link-aggregation group 1
[SW2-if-range]quit
#SW1所有聚合接口所对应聚合组内采用的聚合负载分担类型
[SW1] display link-aggregation load-sharing mode interface
Route-Aggregation1 Load-Sharing Mode:
  source-ip address
  • 32
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张白夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值