MySQL AttributeError: ‘Engine’对象没有’execute’属性的错误

当我们使用SQLAlchemy库来连接和管理MySQL数据库时,有时候会遇到这样的错误信息:AttributeError: 'Engine'对象没有'execute'属性。该错误通常出现在我们尝试执行SQL语句时。

错误的原因

出现这个错误的原因通常是因为我们直接在Engine对象上调用execute()方法,而实际上,Engine对象并没有这个方法。

engine = create_engine('mysql+pymysql://username:password@localhost:3306/database')
result = engine.execute('SELECT * FROM customers')

上述代码中,我们尝试在engine对象上直接调用execute()方法来执行SQL语句,这就是导致错误的原因所在。

解决方法

要解决这个错误,我们需要明白Engine对象和其它对象之间的关系,并正确地调用相应的方法。

在SQLAlchemy中,我们通常会使用engine对象来连接数据库和执行SQL语句。然而,engine对象本身并没有直接提供execute()方法。正确的做法是使用engine对象来创建一个Connection对象,然后在该Connection对象上调用execute()方法来执行SQL语句。

下面是正确的代码示例:

engine = create_engine('mysql+pymysql://username:password@localhost:3306/database')
connection = engine.connect()
result = connection.execute('SELECT * FROM customers')

在以上代码中,我们先创建了一个engine对象来连接数据库,然后使用engine对象的connect()方法创建一个Connection对象。最后,我们在Connection对象上调用execute()方法来执行SQL语句。
获取所有结果需要

...
result = connection.execute(sql)
print(result.all())
posted @ 2024-04-29 06:49  Excel2016  阅读(9)  评论(0编辑  收藏  举报