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

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.xdnf.cn/news/17993.html

相关文章:

  • 华测科技的3D GPR数据分析
  • 无线也要“自主可控”——东土科技WLAN方案
  • C语言+安全函数+非安全函数
  • imx6ull-驱动开发篇26——Linux 中断实验
  • Pytest 插件使用指南:让你的测试更高效
  • GitHub的使用教程
  • WordPress 7B2主题,在使用PHP 8.0+出现502的解决办法。
  • php危险函数,二.assert()[现版本已弃用]
  • 第十六届蓝桥杯青少组C++省赛[2025.8.9]第二部分编程题(4、矩阵圈层交错旋转)
  • MyBatis 动态数据源切换在 Spring Boot 环境下的实现方案
  • 【postgresql】一文详解postgresql中的统计模块
  • 云手机存储和本地存储的区别
  • C#WPF实战出真汁06--【系统设置】--餐桌类型设置
  • 【总结】Python多线程
  • 国内多光谱相机做得好的厂家有哪些?-多光谱相机品牌厂家
  • 硬件实现webrtc的编解码
  • 【2024前端实战综合练习】HTML+CSS+JavaScript 实现无穷可爱爱心喷射特效(含源代码解析 代码结构逻辑简析)
  • OpenCV 阈值处理
  • Flutter 以模块化方案 适配 HarmonyOS 的实现方法
  • 水环境遥感分析!R语言编程+多源遥感数据预处理;水体指数计算、水深回归分析、水温SVM预测、水质神经网络建模及科研级可视化制图
  • openwrt增加自定义网页
  • LeetCode热题100--146.LRU缓存--中等
  • 第40周——GAN入门
  • 动手学深度学习(pytorch版):第三章节—线性神经网络(4)softmax回归
  • strlen与传值传址调用
  • 设计模式(Design Patterns)
  • C++:stl-> list的模拟实现
  • 条件变量的基本介绍与有界缓冲区问题
  • 异步开发:协程、线程、Unitask
  • C语言——深入理解指针(四)