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

sqlachemy

from sqlalchemy import create_engine, String, select, update, delete
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session# 定义模型基类class Base(DeclarativeBase):pass# 定义用户模型class User(Base):__tablename__ = "user1"id: Mapped[int] = mapped_column(primary_key=True)name: Mapped[str] = mapped_column(String(30))email: Mapped[str] = mapped_column(String(50), unique=True)def __repr__(self) -> str:return f"User(id={self.id!r}, name={self.name!r}, email={self.email!r})"# 创建数据库引擎(使用SQLite内存数据库)
engine = create_engine("postgresql://postgres:carizon@10.11.96.70:5432/hdmap_check", echo=True)# 创建表
Base.metadata.create_all(engine)# 使用上下文管理器创建会话
with Session(engine) as session:# 1. 增加(Create) - 添加新用户# print("=== 创建用户 ===")# new_user = User(name="张三", email="zhangsan@example.com")# new_user2 = User(name="张三2", email="zhangsan@example.com")# # session.add(new_user)# session.add_all([new_user,new_user2])# session.commit()# print(f"已创建用户: {new_user}")# # 添加更多用户# users_data = [#     User(name="李四", email="lisi@example.com"),#     User(name="王五", email="wangwu@example.com"),#     User(name="赵六", email="zhaoliu@example.com")# ]# session.add_all(users_data)# session.commit()# print("已批量添加用户")# # 2. 查询(Read) - 获取所有用户# print("\n=== 查询所有用户 ===")# stmt = select(User)# users = session.execute(stmt).scalars().all()# for user in users:#     print(user)# # 查询特定用户# print("\n=== 查询特定用户 ===")# stmt = select(User).where(User.name == "张三2")# # print("sql=",stmt)# # user = session.execute(stmt).scalar_one()# # user = session.execute(stmt).scalar_one_or_none()# user = session.execute(stmt).first()# print(f"找到用户: {user}")# 3. 更新(Update) - 修改用户信息print("\n=== 更新用户 ===")stmt = update(User).where(User.name == "张三2").values(email="wangwu_updated@example.com", name="张三_updated")session.execute(stmt)session.commit()# 验证更新stmt = select(User).where(User.name == "张三_updated")updated_user = session.execute(stmt).scalar_one()updated_user.email="sss"session.commit()print(f"更新后的用户: {updated_user}")# # 4. 删除(Delete) - 删除用户# print("\n=== 删除用户 ===")# stmt = delete(User).where(User.name == "赵六")# session.execute(stmt)# session.commit()# # 验证删除# stmt = select(User)# remaining_users = session.execute(stmt).scalars().all()# print("删除后的剩余用户:")# for user in remaining_users:#     print(user)# # 使用事务的另一种方式
# print("\n=== 使用事务操作 ===")
# with Session(engine) as session:
#     with session.begin():
#         # 在事务中执行多个操作
#         new_user = User(name="钱七", email="qianqi@example.com")
#         session.add(new_user)#         # 更新操作
#         stmt = update(User).where(User.name == "张三").values(email="zhangsan_updated@example.com")
#         session.execute(stmt)#     # 事务已提交,验证结果
#     users = session.execute(select(User)).scalars().all()
#     print("事务操作后的所有用户:")
#     for user in users:
#         print(user)
http://www.dtcms.com/a/356336.html

相关文章:

  • AI操作系统语言模型设计 之1 基于意识的Face-Gate-Window的共轭路径的思维-认知-情感嵌套模型
  • 【C语言】深入理解指针(2)
  • 龙迅#LT7621GX适用于两路HDMI2.1/DP1.4A转HDMI2.1混切应用,分辨率高达8K60HZ!
  • 第二阶段WinForm-11:自定义控件
  • 嵌入式Linux驱动开发:i.MX6ULL中断处理
  • 深入解析Qt节点编辑器框架:交互逻辑与样式系统(二)
  • C++基础(⑤删除链表中的重复节点(链表 + 遍历))
  • 储能变流器之LLC
  • MySQL数据库精研之旅第十四期:索引的 “潜规则”(上)
  • Unity、Unreal Engine与Godot中纹理元数据管理的比较分析
  • 嵌入式Linux LED驱动开发
  • Ubuntu22.04系统安装Opencv,无法定位包libjasper-dev libdc1394-22-dev的解决办法
  • 【C++】C++入门——(上)
  • GTSAM中gtsam::LinearContainerFactor因子详解
  • 【C++八股文】计算机网络篇
  • 【YOLO学习笔记】数据增强mosaic、Mixup、透视放射变换
  • flutter-使用url_launcher打开链接/应用/短信/邮件和评分跳转等
  • leetcode 338 比特位计数
  • rockchip温控及cpu降频配置
  • 事务和锁(进阶)
  • 使用 Docker 部署 Squid 为 Kubernetes 中的 Nexus3 提供公网代理访问
  • Windows12概念曝光,巧用远程控制工具抢先体验
  • 人脸识别“不备案“有哪些后果?
  • 公司内网部署离线deepseek+docker+ragflow本地模型实战
  • Day15 Logurs框架学习
  • Elasticsearch核心配置与性能优化
  • Linux 线程调度核心要点
  • 期权合约作废了怎么处理?
  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 若依微服务一键部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑与修复全记录)