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