Python使用SQLAlchemy

2023-11-04

Python使用SQLAlchemy

1 安装SQLAlchemy

备注:本文适用于SQLAlchemy>2.0

# 安装SQLAlchemy
pip install SQLAlchemy

# 安装pymysql
pip install pymysql

参考文档(SQLAlchemy>2.0)

https://docs.sqlalchemy.org/en/20/

创建数据库

# 创建数据库
CREATE DATABASE mytest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

# 切换数据库
USE mytest;

# 创建数据
CREATE TABLE article (
    a_id INT PRIMARY KEY AUTO_INCREMENT,
	a_title VARCHAR(50) NOT NULL,
	a_keyword VARCHAR(100) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;

2 源代码

2.1 项目目录

在这里插入图片描述

2.2 config_db.py


from sqlalchemy import create_engine, MetaData, URL
from sqlalchemy.orm import Session, sessionmaker, scoped_session


from model.base_model import Base
from model.article import Article


class ConfigDB:

    acc = "root"
    pwd = "123456"
    host = "192.168.108.200"
    port = "3306"
    db_name = "mytest"

    def __init__(self):
        # 配置MySQL,也可以使用URL.create()方法
        db_url = "mysql+pymysql://" + self.acc + ":" + self.pwd + "@" +self.host + ":" +self.port + "/" + self.db_name
        self.engine = create_engine(db_url)

        # 创建session,不建议使用此方法
        self.session = Session(self.engine)

        """
        # 获取sessionmaker
        session_factory = sessionmaker(engine)
        # scoped_session是线程安全的
        # 注意,此session不能使用Query对象
        session = scoped_session(session_factory)
        """


    # 如果设计表可以不执行
    def init_tables(self):
        # 创建全部的表
        Article.metadata.create_all(bind=self.engine)


session = ConfigDB().session

2.3 article.py

from sqlalchemy import Integer, String
from sqlalchemy.orm import mapped_column

from model.base_model import Base


class Article(Base):
    __tablename__ = "article"
    id = mapped_column("a_id", Integer, primary_key=True)
    title = mapped_column("a_title", String(50))
    keyword = mapped_column("a_keyword", String(100))

2.4 base_model.py

from sqlalchemy.orm import DeclarativeBase


class Base(DeclarativeBase):
    """
    声明MySQL基类
    """
    pass

2.5 service_article.py

from sqlalchemy.orm import Query

from config.config_db import session
from model.article import Article

"""
使用orm实现增删改查,也可以用Statements
"""

def add_data_one() -> int:
    # 创建对象
    article = Article()
    article.title = "Mason"
    article.keyword = "Mason"

    # 添加成功的数量
    success_number = session.add(article)
    # 添加数据
    session.commit()
    return success_number


def query_data_all():
    # 构建查询
    query = Query([Article], session=session)

    # 获取单个数据
    data_list:list = query.all()

    # 遍历数据
    for item in data_list:
        item:Article = item
        print(item.id, item.title)

    return data_list

def update_data_one() -> int:
    # 构建查询
    query = Query([Article], session=session)

    # 查询数据
    query_filter:Query = query.filter(
        Article.id == 1
    )

    # 更新数据
    success_number = query_filter.update({
        Article.title: "河南大学"
    })

    session.commit()
    return success_number


def delete_data_one() -> int:
    # 构建查询
    query = Query([Article], session=session)

    # 查询数据
    query_filter: Query = query.filter(
        Article.id == 7
    )

    # 删除数据
    success_number = query_filter.delete()
    session.commit()

    return success_number

2.6 main.py

from config.config_db import ConfigDB
from service.service_article import add_data_one, query_data_all, update_data_one, delete_data_one

ConfigDB().init_tables()


add_data_one()
query_data_all()
update_data_one()
delete_data_one()

3 执行结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python使用SQLAlchemy 的相关文章

随机推荐

  • Doris 导出表结构或数据

    MYSQLDUMP 导出表结构或数据 Doris 在0 15 之后的版本已经支持通过mysqldump 工具导出数据或者表结构 导出查询结果集 Apache Doris 使用示例 导出 导出 test 数据库中的 table1 表 mysq
  • Makefile 中:= ?= += =的区别

    原文链接 https www cnblogs com wanqieddy archive 2011 09 21 2184257 html 在Makefile中我们经常看到 这几个赋值运算符 那么他们有什么区别呢 我们来做个简单的实验 新建一
  • Vue中实现车辆轨迹回放(高德地图)功能:

    1 思路 1 先获取key gt 官网 https lbs amap com ref https console amap com 2 下载并导入依赖 npm install vue amap S 3 使用 2 官网 右上角控制台 3 使用
  • 1 评价类算法:层次分析法笔记(附Python代码)

    什么是评价类问题 题干中要求你确定评价指标 形成评价体系 常见的评价类算法有 层次分析法 TOPSIS法 熵权法 变异系数法 主成分分析法等等 一 原理 简称AHP 是指将与决策总是有关的元素分解成目标 准则 方案等层次 在此基础之上进行定
  • 【python】enum介绍、与enum配合fastapi的使用

    今天对工作中对外提供的接口服务做了下优化 进行一下大概的分享 一 enum介绍 enum模块定义了一个提供迭和比较功能的枚举类型 可以用这个模块为值创建明确定义的符号 而不是使用字面量整数或字符串 1 1通过继承enum Enum派生出新的
  • Qt QRect 解决获取顶点坐标不准的问题

    Qt QRect 解决获取顶点坐标不准的问题 项目上用到了手动绘制矩形的功能 然后要在矩形的左下角绘制文字 构造矩形的时候用的这个构造函数 QRect const QPoint topLeft const QPoint bottomRigh
  • SpringMVC:从入门到精通

    一 SpringMVC是什么 SpringMVC是Spring提供的一个强大而灵活的web框架 借助于注解 Spring MVC提供了几乎是POJO的开发模式 POJO是指简单Java对象 Plain Old Java Objects pu
  • Go底层总结

    Go专家编程 常见数据结构实现原理 channel channel主要用于进程内各goroutine间通信 如果需要跨进程通信 建议使用分布式系统的方法来解决 向channel写数据 如果等待接收队列recvq不为空 说明缓冲区中没有数据或
  • [OGeek2019]babyrop

    OGeek2019 babyrop 查看程序的保护机制 发现是got表不可写的32位程序 拖进ida查看伪代码 sub 80486BB是初始化缓存区的函数 发现buf是一个随机数 发现函数中存在strncmp比较函数 其中buf为用户输入的
  • FlowableWrongDbException: version mismatch: library version is ‘6.5.0.1‘, db version is 5.99.0.0

    今天部署服务器的时候启动时 发现这么个异常 排查方式 1 代码里找版本是否与服务器不兼容 2 查看数据库配置 show variables like lower case table names 查看value 0 或 1 0 区分大小写
  • 手把手教您kaiber,吊炸天的AI视频生成工具

    什么是Kaiber AI 一种人工智能视频生成器 可以将图像和文字生成视频 如何使用Kaiber AI 请按照以下步骤使用 Kaiber AI 前往kaiber ai 注册或登录 点击右上角 创建视频 如果订阅的时候提示要绑定银行卡 则找一
  • Apollo配置自动更新机制及拓展

    Apollo配置自动更新机制及拓展 一 背景 在日常工作中 我们代码里经常会用到以下两种方式读取Apollo配置 1 使用 Value注解 在使用配置的bean里面定义带 Value的属性 将Apollo配置读取到基础类型对象 Value
  • pytorch学习-刘二大人第一遍

    学习链接 https www bilibili com video BV1Y7411d7Ys spm id from 333 999 0 0 一 线性模型 1 数据集分为 训练集和测试集 2 过拟合 训练的时候非常好 测试的时候差强人意 泛
  • Jenkins自定义构建参数使用

    Jenkins自定义构建参数使用 配置参数化构建 新建参数 简单的在命令使用 直接使用字符参数即可 配置名称和默认值 命令中引用 mvn compile jib build Dimage tag pa 1 5 0 BUILD TAG Dre
  • Hyperledger Fabric Java SDK最新教程

    Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK 全称为Fabric sdk java 网上可用资料不多 本文列出了精心整理的针对Fabric Java SDK的最新精选教程 如果希望快速掌握Fabr
  • 【Python 1-4】Python教程之——什么是变量

    变量来源于 数学 是计算机语言中能储存计算结果或能表示值的抽象概念 文章首发地址 运行hello world py时发生了什么 运行hello world py时 Python都做了些什么呢 下面来深入研究一下 实际上 即便是运行简单的程序
  • 段错误(核心已转储)问题的分析方法

    问题现象 今天在研究linux kernel中typedef的用法时 写了一个程序test typedef c 内容如下 include
  • 什么是线路规程?

    今天在看串口驱动的时候遇到了一个概念线路规程 以前只知道规则 程序之类的这个概念还是头次听说 既然碰上了就好好研究一番 百度百科给出了定义 规程 简单说就是 规则 流程 所谓流程即为实现特定目标而采取的一系列前后相继的行动组合 也即多个活动
  • linux 使用Vi/Vim加密和解密文件

    在linux下使用vi vim可以很方便的对文件进行加密和解密的操作 加密 1 进到编辑模式 输入完内容后按ESC 然后输入 X 注意是大写的X 回车 X 2 这时系统提示让你输入密码 2次 3 保存退出 2 取消密码 1 通过vi打开文件
  • Python使用SQLAlchemy

    Python使用SQLAlchemy 1 安装SQLAlchemy 备注 本文适用于SQLAlchemy gt 2 0 安装SQLAlchemy pip install SQLAlchemy 安装pymysql pip install py