1
我已經繼承了一個SQLQlchemy/SQLSoup應用程序,需要將其擴展20次。SQLAlchemy/SQLSoup在MySQL中看不到臨時表
一個查詢速度非常慢,所以我重新載入它。由於MySQL在嵌套子查詢/派生表上的性能不佳,我將它分成兩個臨時表並加入這些表。
現在我正在嘗試將SQL添加到代碼中,但是當我嘗試訪問臨時表時,出現錯誤,指出表不存在。
db.execute("""DROP TABLE IF EXISTS next_requests""") ;
db.execute("""
CREATE TEMPORARY TABLE next_requests
(INDEX request_id_index (cirId))
SELECT DISTINCT
cr.uuid AS cirId,
....")
db.execute("SELECT * FROM next_requests")
現在我得到的錯誤:
ProgrammingError: (ProgrammingError) (1146, "Table 'SAST.next_requests' (doesn't exist")
我想這是因爲會話被關閉和一些查詢之間重新制作的通訊資料,或類似的。
數據庫連接如下。
ENGINE = create_engine(settings.dbString, pool_recycle=1800, pool_size=5)
SESSION = scoped_session(sessionmaker(autoflush=True,\
expire_on_commit=False, autocommit=True))
SQLSOUP_DB = sqlsoup.SQLSoup(ENGINE, session=SESSION)
(SQLSOUP_DB是db.execute中使用的db)。
我需要做些什麼來保持會話打開,以便我仍然可以使用臨時表。或者它可能是導致此問題的其他因素?
怎麼樣,如果我們專注於實際的查詢,並在所有 – Drew
沒有臨時表的一半左右,我花的最後一天,怎麼做,和它的一個衆所周知的問題是,MySQL沒有按不適合嵌套子查詢/派生表,因爲它沒有爲它們編制索引。 –
它會適合上面這裏點擊這個[編輯] – Drew