SQLAlchemy 第三篇
使用insert语句
from sqlalchemy import Table, Column, Integer, String, MetaDatametadata_obj = MetaData()
user_table = Table("user_account",metadata_obj,Column("id", Integer, primary_key=True),Column("name", String(255)),Column("fullname", String(255)),
)
from sqlalchemy import insert
stmt = insert(user_table).values(name="new user", fullname="New User Name")
print(stmt)
compiled = stmt.compile()
compiled.params
INSERT INTO user_account (name, fullname) VALUES (:name, :fullname){'name': 'new user', 'fullname': 'New User Name'}
执行语句
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:root@localhost/test?charset=utf8mb4",echo=True,echo_pool=True,pool_size=20)
with engine.connect() as conn:result = conn.execute(stmt)conn.commit()
2023-12-14 13:54:07,384 INFO sqlalchemy.engine.Engine SELECT DATABASE()
2023-12-14 13:54:07,385 INFO sqlalchemy.engine.Engine [raw sql] {}
2023-12-14 13:54:07,386 INFO sqlalchemy.engine.Engine SELECT @@sql_mode
2023-12-14 13:54:07,387 INFO sqlalchemy.engine.Engine [raw sql] {}
2023-12-14 13:54:07,387 INFO sqlalchemy.engine.Engine SELECT @@lower_case_table_names
2023-12-14 13:54:07,388 INFO sqlalchemy.engine.Engine [raw sql] {}
2023-12-14 13:54:07,390 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 13:54:07,391 INFO sqlalchemy.engine.Engine INSERT INTO user_account (name, fullname) VALUES (%(name)s, %(fullname)s)
2023-12-14 13:54:07,392 INFO sqlalchemy.engine.Engine [generated in 0.00121s] {'name': 'new user', 'fullname': 'New User Name'}
2023-12-14 13:54:07,392 INFO sqlalchemy.engine.Engine COMMIT
插入多条
with engine.connect() as conn:result = conn.execute(insert(user_table),[{"name": "user1", "fullname": "User One"},{"name": "user2", "fullname": "User Two"},])conn.commit()
2023-12-14 14:05:54,902 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 14:05:54,904 INFO sqlalchemy.engine.Engine INSERT INTO user_account (name, fullname) VALUES (%(name)s, %(fullname)s)
2023-12-14 14:05:54,904 INFO sqlalchemy.engine.Engine [cached since 92.92s ago] [{'name': 'user1', 'fullname': 'User One'}, {'name': 'user2', 'fullname': 'User Two'}]
2023-12-14 14:05:54,906 INFO sqlalchemy.engine.Engine COMMIT
# 查询SELECT
from sqlalchemy import select
stmt = select(user_table).where(user_table.c.name == "user1")
print(stmt)
SELECT user_account.id, user_account.name, user_account.fullname
FROM user_account
WHERE user_account.name = :name_1
from sqlalchemy.orm import Session
with Session(engine) as conn:result = conn.execute(stmt)for row in result:print(row)
2023-12-14 14:10:13,515 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 14:10:13,517 INFO sqlalchemy.engine.Engine SELECT user_account.id, user_account.name, user_account.fullname
FROM user_account
WHERE user_account.name = %(name_1)s
2023-12-14 14:10:13,519 INFO sqlalchemy.engine.Engine [cached since 82.49s ago] {'name_1': 'user1'}
(2, 'user1', 'User One')
(4, 'user1', 'User One')
(8, 'user1', 'User One')
2023-12-14 14:10:13,521 INFO sqlalchemy.engine.Engine ROLLBACK
指定查询字段column
print(select(user_table.c.name,user_table.c.id))
SELECT user_account.name, user_account.id
FROM user_account
from typing import List, Optional
from sqlalchemy.orm import Mapped, mapped_column, relationshipfrom sqlalchemy.orm import DeclarativeBaseclass Base(DeclarativeBase):passclass User(Base):__tablename__ = "user_account"id: Mapped[int] = mapped_column(primary_key=True)name: Mapped[str] = mapped_column(String(20))fullname: Mapped[Optional[str]]def __repr__(self) -> str:return f"User(id={self.id},name={self.name})"with Session(engine) as conn:result = conn.execute(select(User.id,User.name)).first()print(result)
2023-12-14 14:22:09,242 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 14:22:09,244 INFO sqlalchemy.engine.Engine SELECT user_account.id, user_account.name
FROM user_account
2023-12-14 14:22:09,246 INFO sqlalchemy.engine.Engine [generated in 0.00123s] {}
(1, 'new user')
2023-12-14 14:22:09,248 INFO sqlalchemy.engine.Engine ROLLBACK
字段别名
stmt = select(("tmpName:"+user_table.c.name).label("realname")).order_by(user_table.c.id)
with engine.connect() as conn:for row in conn.execute(stmt):print(row.realname)
2023-12-14 14:31:05,943 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 14:31:05,944 INFO sqlalchemy.engine.Engine SELECT concat(%(name_1)s, user_account.name) AS realname
FROM user_account ORDER BY user_account.id
2023-12-14 14:31:05,945 INFO sqlalchemy.engine.Engine [cached since 43.98s ago] {'name_1': 'tmpName:'}
tmpName:new user
tmpName:user1
tmpName:user2
tmpName:user1
tmpName:user2
tmpName:user1
tmpName:user2
2023-12-14 14:31:05,947 INFO sqlalchemy.engine.Engine ROLLBACK
## 字段表达式
from sqlalchemy import text
stmt = select(user_table.c.id,text("id+100"),text("'id+100'"),)
with engine.connect() as conn:result = conn.execute(stmt)for row in result:print(row)
2023-12-14 14:34:46,915 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 14:34:46,916 INFO sqlalchemy.engine.Engine SELECT user_account.id, id+100, 'id+100'
FROM user_account
2023-12-14 14:34:46,917 INFO sqlalchemy.engine.Engine [generated in 0.00169s] {}
(1, 101, 'id+100')
(2, 102, 'id+100')
(3, 103, 'id+100')
(4, 104, 'id+100')
(5, 105, 'id+100')
(8, 108, 'id+100')
(9, 109, 'id+100')
2023-12-14 14:34:46,919 INFO sqlalchemy.engine.Engine ROLLBACK
使用orm进行增删改查
增加
squidward = User(name="squidward", fullname="Squidward Tentacles")
krabs = User(name="ehkrabs", fullname="Eugene H. Krabs")
with Session(engine) as session:session.add(squidward)session.add(krabs)session.commit()print("*"*50)# 自动生成的主键属性print(squidward.id)print(krabs.id)
2023-12-14 16:57:42,724 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 16:57:42,725 INFO sqlalchemy.engine.Engine INSERT INTO user_account (name, fullname) VALUES (%(name)s, %(fullname)s)
2023-12-14 16:57:42,726 INFO sqlalchemy.engine.Engine [cached since 261.2s ago] {'name': 'squidward', 'fullname': 'Squidward Tentacles'}
2023-12-14 16:57:42,728 INFO sqlalchemy.engine.Engine INSERT INTO user_account (name, fullname) VALUES (%(name)s, %(fullname)s)
2023-12-14 16:57:42,728 INFO sqlalchemy.engine.Engine [cached since 261.2s ago] {'name': 'ehkrabs', 'fullname': 'Eugene H. Krabs'}
2023-12-14 16:57:42,730 INFO sqlalchemy.engine.Engine COMMIT
**************************************************
2023-12-14 16:57:42,732 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 16:57:42,733 INFO sqlalchemy.engine.Engine SELECT user_account.id AS user_account_id, user_account.name AS user_account_name, user_account.fullname AS user_account_fullname
FROM user_account
WHERE user_account.id = %(pk_1)s
2023-12-14 16:57:42,733 INFO sqlalchemy.engine.Engine [cached since 84.44s ago] {'pk_1': 26}
26
2023-12-14 16:57:42,735 INFO sqlalchemy.engine.Engine SELECT user_account.id AS user_account_id, user_account.name AS user_account_name, user_account.fullname AS user_account_fullname
FROM user_account
WHERE user_account.id = %(pk_1)s
2023-12-14 16:57:42,736 INFO sqlalchemy.engine.Engine [cached since 84.44s ago] {'pk_1': 27}
27
2023-12-14 16:57:42,737 INFO sqlalchemy.engine.Engine ROLLBACK
删除
session = Session(engine)
patrick = session.get(User, 3)
session.delete(patrick)
session.commit()
2023-12-14 17:01:14,641 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 17:01:14,642 INFO sqlalchemy.engine.Engine SELECT user_account.id AS user_account_id, user_account.name AS user_account_name, user_account.fullname AS user_account_fullname
FROM user_account
WHERE user_account.id = %(pk_1)s
2023-12-14 17:01:14,642 INFO sqlalchemy.engine.Engine [cached since 39.91s ago] {'pk_1': 3}
2023-12-14 17:01:14,646 INFO sqlalchemy.engine.Engine DELETE FROM user_account WHERE user_account.id = %(id)s
2023-12-14 17:01:14,647 INFO sqlalchemy.engine.Engine [generated in 0.00076s] {'id': 3}
2023-12-14 17:01:14,650 INFO sqlalchemy.engine.Engine COMMIT
from sqlalchemy import delete
stmt = delete(User).where(User.name.in_(["squidward", "sandy"]))
session.execute(stmt)
session.commit()
2023-12-14 17:04:21,096 INFO sqlalchemy.engine.Engine DELETE FROM user_account WHERE user_account.name IN (%(name_1_1)s, %(name_1_2)s)
2023-12-14 17:04:21,098 INFO sqlalchemy.engine.Engine [cached since 15.71s ago] {'name_1_1': 'squidward', 'name_1_2': 'sandy'}
2023-12-14 17:04:21,099 INFO sqlalchemy.engine.Engine COMMIT
修改
from sqlalchemy import update
stmt = (update(User).where(User.name.in_(["squidward", "sandy"])).values(fullname="Name starts with S")
)
session.execute(stmt)
session.commit()
2023-12-14 17:04:58,832 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-12-14 17:04:58,835 INFO sqlalchemy.engine.Engine UPDATE user_account SET fullname=%(fullname)s WHERE user_account.name IN (%(name_1_1)s, %(name_1_2)s)
2023-12-14 17:04:58,836 INFO sqlalchemy.engine.Engine [generated in 0.00123s] {'fullname': 'Name starts with S', 'name_1_1': 'squidward', 'name_1_2': 'sandy'}
2023-12-14 17:04:58,840 INFO sqlalchemy.engine.Engine COMMIT
相关文章:
SQLAlchemy 第三篇
使用insert语句 from sqlalchemy import Table, Column, Integer, String, MetaDatametadata_obj MetaData() user_table Table("user_account",metadata_obj,Column("id", Integer, primary_keyTrue),Column("name", String(255)),Column(&q…...
交互过程中影响信息质量好坏的因素
人机交互是指人与计算机之间的交流和互动,而人人交流是指人与人之间的交流和互动。在信息质量方面,人机交互通常更为准确和精确,而人人交流可能存在误解、模糊和歧义。 人机交互的信息传递往往通过明确的界面、符号和指令等方式进行。计算机可…...
服务器上配置jupyter,提示Invalid credentials如何解决
我是按照网上教程在服务器上安装的jupyter以及进行的密码配置,我利用 passwd()这个口令生成的转译密码是"argon...."。按照教程配置jupyter notebook配置文件里面的内容,登陆网页提示"Invalid credentials"。我谷歌得到的解答是&…...
Axure中动态面板使用及轮播图多种登录方式左侧导航栏之案列
🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《产品经理如何画泳道图&流程图》 ⛺️ 越努力 ,越幸运 目录 一、轮播图简介 1、什么是轮播图 2、轮播图有什么作用 3、轮播图有什么特点 4、轮播图适应范围 5、…...
大数据之旅-问题反思
1.谈谈你对MR执行流程各个阶段的理解(提示里面涉及到排序,快速排序或者归并排序知道两种实现形式)? 2.hadoop 1.0和hadoop 2.0明显的差异如何理解? hadoop2.0与hadoop1.0区别体现在在架构、性能、功能和组件方面&…...
系统级基础信号知识【Linux】
目录 一,什么是信号 进程面对信号常见的三种反应概述 二,产生信号 1.终端按键产生信号 signal 2. 进程异常产生信号 核心转储 3. 系统调用函数发送信号 kill raise abort 小结: 4. 由软件条件产生 alarm 5. 硬件异常产生信号…...
Excel单元格隐藏如何取消?
Excel工作表中的有些单元格隐藏了数据,如何取消隐藏行列呢?今天分享几个方法给大家 方法一: 选中隐藏的区域,点击右键,选择【取消隐藏】就可以了 方法二: 如果工作表中有多个地方有隐藏的话,…...
Visual Studio(VS)常用快捷键(最详细)
Visual Studio常用快捷键 一、生成:常用快捷键二、调式:常用快捷键三、编辑:常用快捷键四、文件:常用快捷键五、项目:常用快捷键六、重构:常用快捷键七、工具:常用快捷键八、视图:常…...
UDP特性之组播(多播)
UDP特性之组播 1. 组播的特点2. 设置主播属性2.1 发送端2.2 接收端 3. 组播通信流程3.1 发送端3.2 接收端 4. 通信代码 原文链接 在公司测试广播和多播有一点问题。。。 1. 组播的特点 组播也可以称之为多播这也是UDP的特性之一。组播是主机间一对多的通讯模式,是…...
ElasticSearch之cat shards API
命令样例如下: curl -X GET "https://localhost:9200/_cat/shards?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下: index shard prirep state docs s…...
Thread-Per-Message设计模式
Thread-Per-Message是为每一个消息的处理开辟一个线程,以并发方式处理,提高系统整体的吞吐量。这种模式再日常开发中非常常见,为了避免线程的频繁创建和销毁,可以使用线程池来代替。 示例代码如下: public class Requ…...
运筹学经典问题(一):指派问题
问题描述 有 N N N个任务,需要 N N N个人去完成,每个人完成不同工作的效率不同(或者资源、收益等等),需要怎么分配使得整体的效率最高(成本最低等等)呢?这就是经典的指派问题啦&…...
产品经理之如何编写竞品分析(医疗HIS系统管理详细案例模板)
目录 一.项目周期 二.竞品分析的目的 三.竞品分析包含的维度 四.如何选择竞品 五.竞品画布 六.案例模板 一.项目周期 在整个项目的周期,产品经理所做的事情主要在项目前期做市场分析、需求调研等,下面一张图概况了整个项目周期产品经理、开发工程师…...
虚拟内存管理
虚拟内存管理 页面置换算法 功能和目标: 功能:当缺页中断发生,需要调入新的页面而内存已经满时,选择内存当中哪个物理页面被置换。目标:尽可能的减少页面的换进换出次数(即缺页中断的次数)。具…...
ssh时怎么同时指定其端口号,以及scp文件到远程的指定端口
如果想要通过 SSH 连接到指定端口的远程服务器,可以在 SSH 命令中使用 -p 或 --port 参数来指定端口号。以下是相应的用法: $ ssh -p <port> userhost其中, 是要连接的端口号,user 是远程服务器上的用户名,host…...
Redis过期淘汰策略
一. Redis过期淘汰策略 当Redis已用内存超过maxmemory限定时,触发主动清理策略。 主动清理策略在Redis 4.0之前一共实现了 6 种内存淘汰策略,在 4.0 之后,又增加了 2 种 策略,总共8种: 针对设置了过期时间的key做处理…...
微信小程序---自定义组件
目录 1.局部引用组件 2.全局引用组件 3.组件和页面的区别 4.自定义组件样式 5.properties属性 6.data和properties的区别 7.数据监听器 8.纯数据字段 9.自定义组件-组件的生命周期 lifetimes节点 10.组件所在的页面的生命周期 pageLifetimes节点 11.插槽 &#x…...
CGAL的最优传输曲线重构
1、介绍 此程序包实现了一种重建和简化二维点集的方法。输入是一组具有质量属性的二维点,可能受到噪声和离群值的干扰。输出是一组线段和孤立点,它们近似于输入点,如下图所示。质量属性与每个点的近似重要性有关。 左:输入点集受到…...
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费,并且因为其功能强大,导致安装需要很多的系统内存,并且是不可跨平台使用。所以,今天给…...
流程图、泳道图的介绍和示例分享,以及自定义元件库的介绍
目录 一. 流程图介绍 二. Processon使用 新建一个流程图 图形的使用 三. 流程图示例 登录界面 门诊业务流程图 住院业务流程图 药房业务流程图 会议OA流程图 四. 泳道图介绍 五. 自定义元件库 5.1 新建一个元件库 5.2 创建元件 5.3 使用自定义元件库 一. 流程图介…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
