当前位置: 首页 > news >正文

SQLAlchemy 入门:Python 中的 SQL 工具包和 ORM

SQLAlchemy 是 Python 中一款非常流行的数据库工具包,它对底层的数据库操作提供了高层次的抽象。在本篇文章中,我们将介绍 SQLAlchemy 的两个主要组成部分:SQL 工具包 (SQL Toolkit) 和对象关系映射器 (Object-Relational Mapper, ORM) 的基本使用。

一、SQLAlchemy 的安装和设置

安装 SQLAlchemy 很简单,可以通过 pip 工具进行安装:

pip install sqlalchemy

接下来,我们需要设置一个 SQLAlchemy Engine。Engine 是 SQLAlchemy 中的一个核心接口,它为 SQL 数据库提供了一种统一的方式来与 Python 程序进行交互。以下是一个 SQLite 数据库的 Engine 设置示例:

from sqlalchemy import create_engine# 创建一个内存中的 SQLite 数据库
engine = create_engine('sqlite:///:memory:', echo=True)

二、SQLAlchemy SQL 工具包的使用

SQLAlchemy 的 SQL 工具包提供了一种 Pythonic 的方式来生成和执行 SQL 语句。例如,我们可以使用以下代码来创建一个新的数据库表:

from sqlalchemy import Table, Column, Integer, String, MetaDatametadata = MetaData()users = Table('users', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('email', String),
)metadata.create_all(engine)

三、SQLAlchemy ORM 的使用

SQLAlchemy 的 ORM 允许我们将 Python 类映射到数据库表,使我们可以使用面向对象的方式来处理数据库。以下是一个简单的 ORM 示例:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)email = Column(String)Base.metadata.create_all(engine)

在上面的代码中,我们定义了一个 User 类,并将其映射到 users 表。然后,我们可以使用类和对象的方式来操作数据库:

from sqlalchemy.orm import Session# 创建一个新的 Session
session = Session(engine)# 创建一个新的 User 对象
new_user = User(name='John', email='john@example.com')# 添加到 session
session.add(new_user)# 提交(保存)更改
session.commit()

四、总结

在本篇文章中,我们介绍了 SQLAlchemy 的基础知识,包括如何安装和设置 SQLAlchemy,如何使用 SQLAlchemy 的 SQL 工具包和 ORM。SQLAlchemy 是一个强大的工具,它使处理数据库变得更简单、更 Pythonic。在接下来的学习中,你可以深入探索 SQLAlchemy 的高级特性,如事务管理、表关联等。

相关文章:

SQLAlchemy 入门:Python 中的 SQL 工具包和 ORM

SQLAlchemy 是 Python 中一款非常流行的数据库工具包,它对底层的数据库操作提供了高层次的抽象。在本篇文章中,我们将介绍 SQLAlchemy 的两个主要组成部分:SQL 工具包 (SQL Toolkit) 和对象关系映射器 (Object-Relational Mapper, ORM) 的基本…...

react Hook+antd封装一个优雅的弹窗组件

前言 在之前学vue2的时候封装过一个全局的弹窗组件,可以全局任意地方通过this调用,这次大创项目是用react技术栈,看了一下项目需求,突然发现弹窗还是比较多的,主要分为基础的弹窗以及form表单式的弹窗,如果…...

HICP学习--BGP综合小实验

需要完善 一、实验拓扑 二、实验需求 1、R2-7每台路由器均存在一个环回接口用于建立邻居,同时还存在一个环回来代表连接用户的接口;最终这些连接用户的接口网络需要可以和R1/8的环回通讯 2、AS2网段地址172.16.0.0/16 减路由条目数量 三、实验步骤 首先配置IP R…...

grafana中利用变量来添加dashboard详情页地址实现点击跳转

背景 最近弄grafana的dashboard,突然想到各个dashboard之前可以直接跳转到不同详细页面的面板,于是找了找实现方法 实现 以stat 格式的面板为例,显示出各个pod的对应状态, PromQL是(avg(kube_pod_status_phase{phase"Running", namespace!"kube-system"…...

正则表达式练习

正则表达式练习 工具目的代码运行结果 工具 pycharm 目的 https://www.77xsw.cc/fenlei/1_1/:第一页的网址 https://www.77xsw.cc/fenlei/1_2/:第二页的网址 ... https://www.77xsw.cc/fenlei/1_10/:第十页的网址 代码 import requests im…...

leetcode做题笔记73矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路一:记录行列值 void setZeroes(int** matrix, int matrixSize, int* matrixColSize){int row[matrixSize],col[*matrixColSize];fo…...

【2.1】Java微服务: Nacos的使用

目录 Nacos介绍 Nacos安装 下载和安装 修改端口 启动 服务注册与发现 导入Nacos管理依赖 导入服务依赖 配置Nacos的服务地址 启动服务,查看已注册的服务 服务分级存储模型 分级存储模型介绍 具体结构 配置实例集群 同集群优先的负载均衡策略 服务权重配置…...

vue安装及环境配置

vue安装及环境配置 1.安装 Node.js 2.配置默认安装目录和缓存日志目录 3.配置环境变量 4.配置淘宝镜像 5.安装vue和脚手架 6.创建并运行项目 1.安装 Node.js Download | Node.js 在这里👆下载的是最新版,如果要安装以前的版本👇&…...

java使用正则表达式时遇到的问题

标准的正则表达式是什么样的 Node.js(JavaScript) 在正则表达式中,斜杠(/)用来表示正则表达式的开始和结束。在JavaScript中,正则表达式可以使用斜杠包裹起来,以表示这是一个正则表达式的字面量。 在Node.js中&…...

Git介绍及常用命令详解

一、Git的概述 Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。 Git 会跟踪我们对文件所做的更改,因此我们可以记录已完成的工作,并且可以在需要时恢复到特定或以前的版本。Git 还使多人协作变得更加容易&…...

赛事 | 第25届中国机器人及人工智能大赛全国决赛榜单发布

第25届中国机器人及人工智能大赛成功举办 2023年6月13日至14日,第二十五届中国机器人及人工智能大赛于海南科技职业大学成功举办。大赛由中国人工智能学会主办,共有来自清华大学、哈尔滨工业大学、中国科学技术大学、西安交通大学等500多所高校进入全国…...

JavaScript+Asp.Net MVC5同时下载多个文件

前端同时启动多个下载任务(但是没有做压缩包下载) 前端JavaScript脚本: var idList [1,2,3];//要下载的列表 $.each(idList, function (index, item) {downloadURL("/File/GetPdf?id" item); });var count 0; var downloadUR…...

如何实现前后端分离-----前端笔记

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系,将源码补充写的更快哦!!!等一会把源码补一下哦! 拿一个项目看…...

Ceph入门到精通-分布式存储产品的测试实践

分布式存储产品的测试实践 在分布式存储产品的测试过程中,测试到底做了些什么事情呢? 一:测试工作内容 需求,设计评审 测试需要参与到每一个过程中 在设计评审的时候就需要知道验收的标准,这是最重要的开始。因为这…...

【java】设计模式——单例模式

单例模式要点: 一个类只需要一个实例化对象;必须自行创建实例;必须自行向整个系统提供这个实例 实现: 只提供私有构造方法;有一个该类的静态私有对象;提供一个静态公有方法用于创建、获取静态私有对象&…...

【编织时空一:探究顺序表与链表的数据之旅】

本章重点 线性表 顺序表 顺序表OJ题 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结…...

Tesseract用OpenCV进行文本检测

我没有混日子,只是辛苦的时候没人看到罢了 一、什么是Tesseract Tesseract是一个开源的OCR(Optical Character Recognition)引擎,OCR是一种技术,它可以识别和解析图像中的文本内容,使计算机能够理解并处理…...

XLua案例学习

下载 xlua 之后把 asset 文件中的全部文件粘贴到项目文件Asset文件下,将tool粘贴到 asset 同级目录下 然后把 HOTFIX_ENABLE 宏打开 之后 编辑 lua 脚本 更改源代码之后先 Generate Code 然后 HotFix inject in Editor 开发过程: 首先开发业务…...

Linux:Shell编程之免交互

目录 绪论 1、here Document免交互 1.1 格式 1.2 cat结合免交互实现重定向输出到指定文件 1.3 变量替换 2、Expect免交互 2.1 三种写法 3、免交互实现普通用户切换root 3.1 send_user 4、接收参数 5、嵌入执行模式 6、ssh远程登录 绪论 免交互:不需要人…...

最强自动化测试框架Playwright(18)- 执行js脚本

page.evaluate() API 可以在网页上下文中运行 JavaScript 函数,并将结果带回 Playwright 环境。 href page.evaluate(() > document.location.href) 如果结果是 Promise 或函数是异步的,则计算将自动等待,直到解析…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...