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
驱动程序,连接到 localhost
的 3306
端口,使用名为 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技术站