Я пытаюсь выполнить запросы TSQL в удаленной базе данных MSSQL, используя SQLAlchemy и pymssql. Я проверил свой процедурный запрос непосредственно в базе данных, и он работает так, как предполагалось, он также работает, если я запускаю его непосредственно через pymssql. Если я запускаю обычные однострочные запросы, такие как:
select table_name from INFORMATION_SCHEMA.tables
Через SQLAlchemy это тоже работает как надо. Но когда я пытаюсь выполнить следующий запрос TSQL, он фактически не создает таблицу:
IF NOT EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'SOME_TABLE')
BEGIN
CREATE TABLE SOME_TABLE (SOME_TEXT VARCHAR(255), SOME_TIME DATETIME)
END
он запускает его, поскольку он был успешным, и если я пытаюсь прочитать результат из выполнения, он выдает мне «Ошибка уже закрытого ресурса», как и ожидалось, поскольку это запрос CREATE. Однако, если я попытаюсь добавить данные в таблицу «SOME_TABLE», меня вырвет и скажет, что таблица не существует. Такое ощущение, что он только загружает запрос как функцию, но никогда не выполняет его. Любые идеи? Или даже лучше; Запросы TSQL, которые действительно работают при выполнении с помощью SQLAlchemy и pymssql.
Спасибо,
commit
свою сессию в конце? - person javex   schedule 04.09.2013SELECT
, которая не изменяет таблицу и, следовательно, не требует фиксации. Однако, если вы что-то меняете, вам обязательно нужно зафиксировать (если не в режиме автоматической фиксации). Возможно, вы захотите прочитать, что транзакция в целом прошла хорошо. Однако очень важно понимать транзакцию SQLAlchemy, чтобы правильно использовать ORM. - person javex   schedule 04.09.2013