Я унаследовал приложение 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")
я предполагаю, что это потому, что сессия закрывается и вновь Oped между запросами, или что-то подобное.
Соединение с базой данных выглядит следующим образом.
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, используемый в db.execute).
Что нужно сделать, чтобы открыть сеанс, чтобы я мог использовать временные таблицы. Или это может быть что-то другое, вызывающее эту проблему?
как насчет если мы ориентируемся на фактическом запросе и без каких-либо временных таблиц на всех – Drew
Как насчет я провел последний день и половина делает это, и его хорошо известная проблема, что MySQL Безразлично «хорошо работать с вложенными подзапросами/производными таблицами, так как он не индексирует их. –
он поместится выше здесь нажмите на это [править] – Drew