python SQLAlchemy 中的Engine详解

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模拟浏览器发送http请求

    Python requests库爬取豆瓣电视剧数据并保存到本地详解 在进行爬虫开发时,我们可能需要使用Python的requests库来爬取网站数据。本文将介绍如何使用Python requests库爬取豆瓣电视剧数据并保存到本地,并提供两个示例。 实现步骤 步骤一:安装requests库和BeautifulSoup库 在Python中,我们可以使用pip命…

    python 2023年5月15日
    00
  • 基于Python实现将列表数据生成折线图

    下面是基于Python实现将列表数据生成折线图的完整攻略。 1. 准备工作 在使用Python实现折线图前,需要先安装必要的库: pip install matplotlib 安装完成后,在代码中引入matplotlib库: import matplotlib.pyplot as plt 2. 准备数据 折线图的生成需要一组数据,最好是已经排好序的数据列表,…

    python 2023年5月18日
    00
  • Python爬取知乎图片代码实现解析

    Python爬取知乎图片是一个常见的网络爬虫应用场景。在本文中,我们将深入讲解如何使用Python爬取知乎图片,并提供两个示例,以便更好地理解这个过程。 Python爬取知乎图片的方法 Python爬取知乎图片的方法如下: 使用requests模块发送HTTP请求,获取知乎页面的HTML源代码。 使用BeautifulSoup模块解析HTML源代码,获取知乎…

    python 2023年5月15日
    00
  • python中的正斜杠与反斜杠实例验证

    以下是“Python中的正斜杠与反斜杠实例验证”的完整攻略: 一、问题描述 在Python中,正斜杠(‘/’)和反斜杠(‘\’)是常用的符号。本文将通过实例验证Python中正斜杠和反斜杠的用法。 二、解决方案 2.1 实例验证 以下是两个实例,演示了Python中正斜杠和反斜杠的用法: 2.1.1 实例1:使用正斜杠表示路径分隔符 假设我们要打开一个文件,…

    python 2023年5月14日
    00
  • Linux服务器网卡流量查看方法 shell和Python各一枚

    Linux服务器网卡流量查看方法 shell和Python各一枚 在Linux服务器上,我们经常会需要查看网卡的流量情况,以便了解网络带宽的使用情况和网络环境的波动情况。下面分别介绍使用shell脚本和Python脚本来查看网卡流量的方法。 使用Shell脚本查看网卡流量 在Linux系统中,我们可以通过/proc/net/dev文件来查看网卡的流量情况。我…

    python 2023年6月3日
    00
  • 详解python3中用HTMLTestRunner.py报ImportError: No module named ‘StringIO’如何解决

    在Python3中,由于StringIO被移动到了io模块中,而HTMLTestRunner.py却依赖于StringIO类,所以在使用HTMLTestRunner时,可能会报ImportError:Nomodulenamed’StringIO’异常。下面详细讲解如何解决这个问题。 步骤一:下载HTMLTestRunner 首先确定你的Python版本,如果…

    python 2023年5月13日
    00
  • 在Python中如何优雅地创建表格的实现

    确实,在Python中非常容易优雅地创建高质量的表格。本文将介绍三种创建表格的方法:使用Python内置的数据结构、使用第三方库Pandas以及使用第三方库PrettyTable。 1.使用Python内置的数据结构 Python内置的数据结构,如列表和字典,可以轻松地创建表格。如果我们有以下数据: Name Age Gender Alice 25 Fema…

    python 2023年5月19日
    00
  • Python爬虫实战之爬取京东商品数据并实实现数据可视化

    那我就为你讲解一下“Python爬虫实战之爬取京东商品数据并实现数据可视化”的完整攻略。 一、爬取京东商品数据 1.1 获取搜索链接 首先,我们需要打开京东首页,在搜索框中输入我们要爬取的商品关键词,比如“小米手机”。然后点击搜索,进入搜索结果页面。 接着,我们需要分析搜索结果页面的url,找到关键词“小米手机”在url中的表现。经过观察,我们发现搜索结果页…

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