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

Python Sqlalchemy数据库连接

Python Sqlalchemy数据库连接

    • 一、连接数据
    • 二、模型
    • 三、ORM操作

一、连接数据

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker# 1. 连接数据库
dbHost = 'postgres://用户名:密码@主机:端口/数据库名'
engine = create_engine(dbHost)
# create_engine() 参数说明:
# a. dbHost, # 数据库连接信息
# b. echo=False,  # 是否打印SQL
# c. pool_size=10,  # 连接池的大小,指定同时在连接池中保持的数据库连接数,默认:5
# d. max_overflow=20,  # 超出连接池大小的连接数,超过这个数量的连接将被丢弃,默认: 5# 2. 创建会话
Session = sessionmaker(bind=engine)
session = Session()

二、模型

from sqlalchemy import Column, String, TIMESTAMP
from sqlalchemy.dialects.postgresql import INTEGER, TEXT, VARCHAR
from sqlalchemy.ext.declarative import declarative_base# 模型父类
Base = declarative_base()
class User(Base):__tablename__ = 'auth_user'id = Column(INTEGER, primary_key=True)active = Column(INTEGER)name = Column(TEXT)class Size(Base):__tablename__ = 'master_size'id = Column(INTEGER, primary_key=True)active = Column(INTEGER)size = Column(TEXT)user_id = Column(INTEGER)

三、ORM操作

from sqlalchemy import func# 1. 查询
# func.lower(User.name)  转换为小写
user_objs = session.query(User).filter(func.lower(User.name) == 'jack', User.active == 0)
user_obj = session.query(User).get(5)   # 获取id=5
user_obj = session.query(User).get({"id": 5, "active": 0}) # 获取id=5 and active=0# 2. 添加 
# 添加User
user_obj = User(name='张三', active=0)
session.add(user_obj)   # 添加
session.commit()   # 提交
# 添加Size
size_obj = Size(size='XXL', active=0, user_id=user_obj.id)
session.add(size_obj)   # 添加
session.commit()   # 提交# 3. 删除
user_objs = session.query(User).filter(func.lower(User.name) == 'jack', User.active == 0)
session.delete(user_objs)
session.commit()# 修改
user_obj = session.query(User).get({"id": 5, "active": 0})
user_obj.name = '李四'
session.commit()
http://www.dtcms.com/a/332800.html

相关文章:

  • 紫金桥RealSCADA:国产工业大脑,智造安全基石
  • 【已解决】在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件
  • JavaScript 防抖(Debounce)与节流(Throttle)
  • 易道博识康铁钢:大小模型深度融合是现阶段OCR的最佳解决方案
  • 【Trans2025】计算机视觉|UMFormer:即插即用!让遥感图像分割更精准!
  • Notepad++插件开发实战指南
  • Radar Forward-Looking Imaging Based on Chirp Beam Scanning论文阅读
  • 《WINDOWS 环境下32位汇编语言程序设计》第1章 背景知识
  • 【Linux】探索Linux虚拟地址空间及其管理机制
  • C# HangFire的使用
  • 概率论基础教程第2章概率论公理(习题和解答)
  • 在 Linux 服务器搭建Coturn即ICE/TURN/STUN实现P2P(点对点)直连
  • HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新
  • pyecharts可视化图表-pie:从入门到精通(进阶篇)
  • Python 数据可视化:柱状图/热力图绘制实例解析
  • 概率论基础教程第2章概率论公理
  • 享元模式C++
  • 基于深度学习的零件缺陷识别方法研究(LW+源码+讲解+部署)
  • 力扣hot100 | 普通数组 | 53. 最大子数组和、56. 合并区间、189. 轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数
  • 什么才是真正的白盒测试?
  • 专题三_二分_x 的平方根
  • JavaScript 解析 Modbus 响应数据的实现方法
  • 记录处理:Caused by: java.lang.UnsatisfiedLinkError
  • MARCONet++ 攻克中文文本图像超分难题
  • 疯狂星期四文案网第40天运营日记
  • Web 开发 15
  • Transformer实战(11)——从零开始构建GPT模型
  • required a bean of type ‘com.example.dao.StudentDao‘ that could not be found
  • (Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成
  • All Document Reader:一站式文档阅读解决方案