python SQLAlchemy 中的Engine详解

yizhihongxing

Python SQLAlchemy 中的 Engine 详解

什么是 Engine?

在 SQLAlchemy 中,Engine 是与底层数据库 API 的交互接口。它可用于连接,管理连接,提供事物支持以及发出 SQL 命令和获取 SQL 查询结果。Engine 对象是 DBAPI 或 DBAPI 2 驱动程序中的 Connection 和 Cursor 对象的封装,用于数据库指令的生成和执行。

Engine 的连接字符串

连接串用于指定如何连接到底层数据库。连接字符串由 DBAPI 驱动程序中连接函数所期望的所有参数组成。常见的数据库连接字符串格式如下所示:

dialect+driver://user:password@host:port/database

其中,各个部分的含义如下:

  • dialect:指定使用的数据库类型,如 MySQL,PostgreSQL,Oracle 等

  • driver:指定使用的 DBAPI 驱动程序,如 pymysql,psycopg2,cx_Oracle 等

  • user:数据库用户名

  • password:数据库密码

  • host:数据库地址

  • port:数据库端口号

  • database: 数据库名称

通过指定不同的 dialect 和 driver,可以实现与各种不同类型的数据库进行交互。

创建 Engine

为了创建一个 Engine 对象,首先需要使用 create_engine 函数创建一个引擎对象。下面是一个例子:

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://user:password@localhost:3306/test')

这个例子中,使用 create_engine 函数创建了一个 MySQL 数据库引擎。连接字符串 mysql+pymysql://user:password@localhost:3306/test 中,指定了使用 mysql dialect,使用 pymysql 驱动程序,连接到 localhost3306 端口,使用名为 test 的数据库。

连接到 Engine

有了 Engine 对象之后,我们就可以使用 connect 方法来连接到底层数据库。下面是一个例子:

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://user:password@localhost:3306/test')
conn = engine.connect()

这个例子中,我们首先创建了一个 MySQL 数据库引擎,然后通过 connect 方法连接到底层数据库,并将连接对象保存到 conn 变量中。

创建连接后,我们可以使用连接对象执行 SQL 查询。下面是一个例子:

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://user:password@localhost:3306/test')
conn = engine.connect()
result = conn.execute('SELECT * FROM test_table')
for row in result:
    print(row)

这个例子中,我们首先创建了一个 MySQL 数据库引擎,然后通过 connect 方法连接到底层数据库。接着使用 execute 方法执行 SELECT 查询,并将结果保存在 result 变量中,最后通过循环遍历 result 对象,输出查询结果。

事务支持

在 SQLAlchemy 中,Engine 对象还提供了事务支持。使用 Engine 对象,我们可以方便地开启和提交事务。下面是一个例子:

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://user:password@localhost:3306/test')
conn = engine.connect()

tx = conn.begin()
try:
    conn.execute('INSERT INTO test_table (name) VALUES ("Tom")')
    conn.execute('INSERT INTO test_table (name) VALUES ("Jerry")')
    tx.commit()
except:
    tx.rollback()
    raise

这个例子中,我们首先创建了一个 MySQL 数据库引擎,然后通过 connect 方法连接到底层数据库。接着使用 begin 方法创建一个事务对象 tx,然后通过 execute 方法执行 INSERT 查询。最后使用 commit 方法提交事务。

总结

在本文中,我们介绍了 SQLAlchemy 中的 Engine,它是与底层数据库 API 交互的接口。我们通过示例代码演示了如何创建 Engine、连接到 Engine 和执行 SQL 查询,同时还介绍了 Engine 对象提供的事务支持。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python SQLAlchemy 中的Engine详解 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 使用python实现knn算法

    使用Python实现KNN算法可以分为以下几个步骤: 数据预处理 KNN算法要求数据必须是数值类型,因此需要将非数值类型的数据转换为数值型。此外,还需要对数据进行标准化处理,将不同范围的特征值转换为同等重要性的数值。常用的方法是z-score标准化或min-max缩放。 示例说明: import pandas as pd from sklearn impor…

    python 2023年6月3日
    00
  • Python 使用递归处理集合

    Python中使用递归处理集合,是一种常见的算法模式,特别适用于树形结构等各种递归结构的数据处理。下面是详细讲解Python使用递归处理集合的完整攻略: 什么是递归? 递归是指在函数内部调用自身的行为,通过递归可以遍历树形结构等各种递归结构的数据。递归函数在处理时需要处理两个部分: 基本情况:递归函数需要处理的边界(终止)条件,即已经到达了最底层。 递归情况…

    python-answer 2023年3月25日
    00
  • 不到40行代码用Python实现一个简单的推荐系统

    不到40行代码用Python实现一个简单的推荐系统 推荐系统是一种常见的人工智能应用,它可以根据用户的历史行为和偏好向用户推荐可能感兴趣的品。本文将介绍如何使用Python实现一个简单的推荐系统,该系统基于用户-物品评分矩阵,使用协同过滤算法进行推荐。 1. 数据集 我们将使用MovieLens数据集来演示如何使用协同过滤算法进行推荐。数据集包含多个用户对多…

    python 2023年5月14日
    00
  • 使用 Python 从 SQL 中搜索元素

    【问题标题】:Search element from SQL using Python使用 Python 从 SQL 中搜索元素 【发布时间】:2023-04-01 20:42:01 【问题描述】: 如果元素 ID 预先存在,我正在编写一个 python 脚本来执行一些特定的任务。我创建了一个用于保存数据元素的数据库。 我想知道元素 link_ID 是否存在…

    Python开发 2023年4月8日
    00
  • 详解PyMySQL插入字典类型的数据

    接下来我将详细讲解“详解PyMySQL插入字典类型的数据”的完整攻略。 什么是PyMySQL? PyMySQL是一个基于Python语言实现的MySQL数据库操作库。它使用纯Python语言编写,无需额外依赖,使用灵活简单,并且完全兼容MySQL数据库。 PyMySQL插入字典类型的数据 在Python中,字典类型是非常常见的数据类型之一。但是,在将字典类型…

    python 2023年5月13日
    00
  • python输出pdf文档的实例

    当要将Python程序输出的数据,以PDF的格式保存下来时,可以使用第三方库实现。下面是Python输出PDF文档的实现攻略: 安装第三方库 通常情况下,我们可以使用Python第三方库 reportlab 来生成PDF文档。首先需要使用 pip 来安装该库: pip install reportlab 创建 PDF 文档 导入依赖库 需要先导入依赖库: f…

    python 2023年5月20日
    00
  • python request post 列表的方法详解

    关于“python request post 列表的方法详解”,以下是详细的攻略: 标题 什么是request post请求? 首先,我们需要了解一下request库的post请求。Post请求是客户端向服务端发送数据的一种请求方式,一般用来提交表单数据或上传文件。在python中,可以使用request库发送post请求。 request post请求发送…

    python 2023年6月3日
    00
  • 对python抓取需要登录网站数据的方法详解

    对Python抓取需要登录网站数据的方法详解 1. 确定所需网站的登录方式 在开始抓取网站数据之前,我们需要确定该网站的登录方式。大多数网站都有两种类型的登录方式:基于表单的登录和基于cookie的登录。 基于表单的登录涉及到填写表单字段,如用户名和密码,向服务器发送POST请求来登录。如果登录成功,服务器将会响应一些cookie,这些cookie将被存储在…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部