MySQL AttributeError: ‘Engine’物件沒有’execute’屬性的錯誤

Excel2016發表於2024-04-29

當我們使用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())

相關文章