博客
关于我
SQLAlchemy 执行原生 SQL语句
阅读量:690 次
发布时间:2019-03-17

本文共 3060 字,大约阅读时间需要 10 分钟。

使用 SQLAlchemy 进行原生 SQL 操作

SQLAlchemy 是一款功能强大的 ORM 工具,它主要通过 Session 对象进行数据库操作。如果您需要使用原生 SQL 语句进行操作,需要使用 Engine 和 Connection 对象。以下将介绍如何使用 SQLAlchemy 进行原生 SQL 操作,具体以 SQLite 数据库为例。


原生 SQL 语句操作概述

  • 创建 Engine 对象

    使用 create_engine() 函数创建 Engine 对象,指定数据库 URL。例如,用于 SQLite 数据库的 URL 格式为 sqlite:///数据库名称

  • 获取 Connection 对象

    通过 Engine.connect() 方法获取 Connection 对象,Connection 对象支持原生 SQL 语句的执行。

  • 执行 SQL 语句

    Connection 对象的 execute() 方法用于执行 SQL 语句,返回 ResultProxy 对象。ResultProxy 提供多种方法(如 fetchone()fetchall())来处理查询结果。

  • 关闭资源

    在操作完成后,使用 Connection.close() 方法释放资源。


  • 示例:基本原生 SQL 操作

    from sqlalchemy import create_engineengine = create_engine('sqlite:///testdb.db')def test_select_statement():    with engine.connect() as conn:        result_proxy = conn.execute("SELECT * FROM employees")        result = result_proxy.fetchall()        for item in result:            print(item)

    带有参数的 SQL 语句操作

    SQLAlchemy 支持两种参数格式:问号 (?) 和命名参数 (:number)。分别如下:

  • 问号格式
    在 SQL 语句中使用 ? 是常见的参数格式。例如:
  • def test_parameter_method1():    with engine.connect() as conn:        conn.execute(            "INSERT INTO employees (EMP_ID, FIRST_NAME, LAST_NAME, GENDER, AGE, EMAIL, PHONE_NR, EDUCATION, MARITAL_STAT, NR_OF_CHILDREN) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);",            ('9002', 'Stone2', 'Wang', 'M', 20, 'stone@gmail.com', '138xxx', 'Bachelor', 'Single', 0)        )
    1. 命名参数格式
      使用 :1, :2, :3 等格式指定参数。例如:
    2. def test_parameter_method2():    with engine.connect() as conn:        conn.execute(            "INSERT INTO employees (EMP_ID, FIRST_NAME, LAST_NAME, GENDER, AGE, EMAIL, PHONE_NR, EDUCATION, MARITAL_STAT, NR_OF_CHILDREN) VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10);",            ('9003', 'Stone3', 'Wang', 'M', 20, 'stone@gmail.com', '138xxx', 'Bachelor', 'Single', 0)        )

      插入多行数据

      SQLAlchemy 支持一次插入多行数据,数据存储在一个列表中。例如:

      def test_insert_multiple_rows():    with engine.connect() as conn:        values = [            ('9004', 'Stone4', 'Wang', 'M', 20, 'stone@gmail.com', '138xxx', 'Bachelor', 'Single', 0),            ('9005', 'Stone5', 'Wang', 'M', 20, 'stone@gmail.com', '138xxx', 'Bachelor', 'Single', 0),            ('9006', 'Stone6', 'Wang', 'M', 20, 'stone@gmail.com', '138xxx', 'Bachelor', 'Single', 0)        ]        conn.execute(            "INSERT INTO employees (EMP_ID, FIRST_NAME, LAST_NAME, GENDER, AGE, EMAIL, PHONE_NR, EDUCATION, MARITAL_STAT, NR_OF_CHILDREN) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);",            values        )

      事务操作

      SQLAlchemy 提供事务操作,支持 commit 和 rollback。每次操作开始时,使用 begin() 方法启动事务,操作完成后手动 commit 或 rollback。例如:

      def test_txn():    conn = engine.connect()    with conn.begin() as txn:        conn.execute(            "INSERT INTO employees (EMP_ID, FIRST_NAME, LAST_NAME, GENDER, AGE, EMAIL, PHONE_NR, EDUCATION, MARITAL_STAT, NR_OF_CHILDREN) VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10);",            ('9007', 'Stone7', 'Wang', 'M', 20, 'stone@gmail.com', '138xxx', 'Bachelor', 'Single', 0)        )        txn.commit()    conn.close()

      SQLite 原生 SQL 操作总结

      通过以上方法,开发者可以利用 SQLAlchemy 的 Engine、Connection 以及原生 SQL 语句灵活操作数据库。无论是简单的数据查询,还是复杂的数据插入操作,使用原生 SQL 都提供了强大的灵活性。

    转载地址:http://wjthz.baihongyu.com/

    你可能感兴趣的文章
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>
    QGIS怎样设置简体中文以及新建可编辑的多边形的图层
    查看>>
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>
    PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
    查看>>
    PowerDesigner 使用的一些技巧(转)
    查看>>
    QGIS在Windows上下载安装与建立空间数据库连接
    查看>>
    PowerDesigner165安装婆姐汉花教程
    查看>>
    PowerDesigner使用教程:设置注释、默认值属性
    查看>>
    PowerDesigner使用教程:不显示背景网格
    查看>>