SqlAlchemy使用教程(一) 原理与环境搭建

在这里插入图片描述

一、SqlAlchemy 原理及环境搭建

SqlAlchemy是1个支持连接各种不同数据库的Python库,提供DBAPIORM(object relation mapper)两种方式使用数据库。

DBAPI方式,即使用SQL方式访问数据库
ORM, 对象关系模型,是用 Python 类对象映射 Database表的一种方式。

官方文档:
https://docs.sqlalchemy.org/en/20/intro.html

1、SqlAlchemy 的架构与主要功能

1.1 架构图

SQLAlchemy 是由Core 与 ORM层组成, 在Core层,提供了Engine对象与数据库API交互,而SQL Expression Language 是对 Sql 语句的封装,用以消除各数据API之间的差异,实现1套接口适用于所有数据库。
ORM 是在Core之上的抽象层,其更符合面向对象编程的思路,
在这里插入图片描述

1.2主要功能点

在Core层,可以使得DB API 直接操作数据库,也可以使用SQL Expression Language. 这是SqlAlchemy 提供的SQL表达式封装器。该接口层使用接近于原生SQL,更方便python编程。

1.3 什么是ORM?

Object Relation Mapping (ORM)是用Python 对象映射到Database表的一种方法。SqlAlchemy 的ORM有点类似于Hibernate。

数据库的二维表数据,可以用Python list类型表示,使用 [tuple, …] 形式,如下

[('1', 'Michael'),('2', 'Bob'),('3', 'Adam')
]

使用 mysql-connector, sqlite3返回的数据结构就是像上面这样表示的。
而在ORM中,通过定义1个class,来表示db table的结构,

class User(object):def __init__(self, id, name):self.id = idself.name = name

每行数据是该类的1个实例对象, 这样1个table就可以用class + object list 来表示,这就是ORM (Object-Relational Mapping)的原理。
在这里插入图片描述

1.4 常用概念与术语

SqlAlchemy 使用了很多专用术语与名词,下面列出常用的术语及解释,可以帮助看懂官方文档。

  • metadata, database metadata, table metadata
    Metadata通常是指“data that describes data”。在SQLAlchemy中,术语“Metadata”元数据结构,它是关于数据库中表、字段、约束和其他DDL对象定义相关数据的集合。可以理解为数据引擎对象的基础结构,与数据库中schema 的概念类似。
  • Insert Sentinel ,原义为“插入操作守卫哨兵”
    这是一个特定于SQLAlchemy的术语,指的是一个列表,该列表可用于多行插入操作,以根据使用RETURNING值跟踪多行插入操作结果 。
  • Session
    Session 是ORM数据库操作的容器或作用域。Seesion从数据库加载实例,跟踪对Model实例的更改。
  • scalar subquery
    指嵌套闭SELECT中的SELECT子语句。
SELECT id, (SELECT name FROM address WHERE address.user_id=user.id)
FROM user
  • DB reflection
    从已存在数据库中获取数据库结构schema数据 。

2. 环境搭建

1)安装
安装 sqlalchemy 库

pip install sqlalchemy

安装数据库驱动库,如安装mysql接口库:mysql-connector ,

pip3 install mysql-connector

Python3已内置 sqlite3 库,可以直接使用

2)验证安装是否成功

打开终端窗口,输出python,进入命令行模式,查看是否能成功显示版本号。

>>> import sqlalchemy
>>>sqlalchemy.__version__
'1.2.7'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/344951.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++学习笔记-STL案例-机房预约系统2-创建身份类

前言 衔接上一篇“c学习笔记-STL案例-机房预约系统1-准备工作”,本文主要包括:创建身份类,建立了整个系统的框架,Identity基类,派生类:Sudent、Teacher、Manager,基类无实现源文件,…

【Python】编程练习的解密与实战(四)

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《Python | 编程解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🪐1. 初识Python &a…

HTML5 article标签,<time>...</time>标签和pubdate属性的运用

1、<article>...</article>标签的运用 article标签代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容。它可以是一篇博客或报竟杂志中的文章、一篇论坛帖子、一段用户评论或一个独立的插件&#xff0c;或者其他任何独立的内容。把文章正文放在h…

PyTorch安装教程(Win10),含遇到的问题及解决办法

1. 环境准备 首先&#xff0c;打开PyTorch官网&#xff1a;https://pytorch.org/get-started/locally/ 向下可以看到有如下几个条件&#xff1a; Python&#xff1a;PyTorch仅支持Python3.x&#xff0c;不支持Python2.x&#xff1b; Package Manager&#xff1a; Anaconda&am…

TreesVariety

树木品种 - 树木和植物捆绑包。与“植被引擎”兼容的包装 通用和HDRP的树木包在这里 树木品种: ● 支持Unity Wind; ● 11种树木,7种植物; ● Unity树创建器树(可编辑); ● 与内置管道配合使用; ● 支持地形广告牌。 树木: ● 8棵桦树; ● 4块枫木; ● 8块橡木; ●…

【C】volatile 关键字

目录 volatile1&#xff09;基本概念2&#xff09;用途&#xff1a;禁止编译器优化3&#xff09;总结 volatile 1&#xff09;基本概念 const是C语言的一个关键字。 const用于告诉编译器相应的变量可能会在程序的控制之外被修改&#xff0c;因此编译器不应该对其进行优化。 …

element-ui 如何修改el-popconfirm的样式

改造之前效果 改造之后效果 代码&#xff1a; <style lang"scss"> .my-popconfirm {width: 92% !important;height: 130px !important;padding: 14px !important;font-size: 28px !important;.el-popper {font-size: 28px !important;}.el-popconfirm__main {…

【期末考试】网络综合复习宝典

相关链接 网络复习思维导图&#xff08;HCIP&#xff09;https://www.edrawsoft.cn/viewer/public/s/038e2370897928 详述循环冗余校验CRC码https://blog.csdn.net/liht_1634/article/details/124328005?app_version6.2.6&codeapp_1562916241&csdn_share_tail%7B%22…

Linux中Docker数据管理的数据卷及挂载

目录 一、数据管理 1. 讲述 2. 应用场景 二、数据卷的应用 1. 命令 2. tomcat镜像 3. 挂载数据卷 4. 项目部署在数据卷 三、目录挂载 四、完善Tomcat配置 每篇一获 一、数据管理 1. 讲述 Docker 的数据管理主要涉及到两个方面&#xff1a;数据卷&#xff08;Volumes&#xff09…

(学习日记)2024.01.13:一份关于自行车定位的调研 2

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

[开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

C与Python中的赋值、浅拷贝与深拷贝 1. Python中的赋值、浅拷贝、深拷贝2. C中的赋值、浅拷贝、深拷贝2.1 概念2.2 示例&#xff1a;从例子中理解1) 不可变对象的赋值、深拷贝、浅拷贝2) 可变对象的赋值、浅拷贝与深拷贝3) **可变对象深浅拷贝(外层、内层改变元素)** 写在前面&…

第九讲 单片机驱动彩色液晶屏 控制RA8889软件:显存操作

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…