当前位置: 首页 > 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.xdnf.cn/news/1393759.html

相关文章:

  • ClickHouse 客户端
  • 精益管理学会|工厂建设如何做好布局?
  • Express框架介绍与基础入门
  • BugKu Web渗透之file_get_contents
  • 什么是 MySQL的主从同步机制?它是如何实现的?
  • Spring Boot 使用 RestTemplate 调用 HTTPS 接口时报错:PKIX path building failed 解决方案
  • GY-BMP280压强传感器完整工程stm32控制
  • Woody:开源Java应用性能诊断分析工具
  • “游戏手柄”线性霍尔传感器IC替代方案:赛卓SC470X
  • 深度对比:BQ79758-Q1 vs BQ79718-Q1,哪款汽车级电池监测器更适合你的BMS设计?
  • LDA(隐狄利克雷分配):主题模型的经典之作
  • [机器学习]基于K-means聚类算法的鸢尾花数据及分类
  • 动态环境下的人员感知具身导航!HA-VLN:具备动态多人互动的视觉语言导航基准与排行榜
  • gpu与cpu各厂商的优劣
  • 吱吱企业通讯软件可私有化部署,构建安全可控的通讯办公平台
  • [TG开发]与Reids集成
  • 深度拆解 OpenHarmony 位置服务子系统:从 GNSS 到分布式协同定位的全链路实战
  • LeetCode - 1. 两数之和
  • 华硕主板 BIOS 提示——GPT header corruption has been detected
  • 【树论】树上启发式合并
  • RV1126的OSD模块讲解
  • 单节锂电池,升压至12V/2.5A的芯片选型指南(附FP5207X 与 FP7208参数表)
  • Zabbix-获取客户端的SNMP数据
  • CMake⼯程指南-2
  • Linux系统——EXT2 文件系统
  • 记录:HSD部署(未完成)
  • 基于 Vue + Interact.js 实现可拖拽缩放柜子设计器
  • CosyVoice win10启用记
  • 《Shell 大道:筑基篇(下)—— 流控筑根基,数据任驱驰》
  • 【K8s】整体认识K8s之与集群外部访问--service