Я использую engine.execute () для запуска raw SQL, чтобы изменить имя столбца в SQL Сервер, например, так:
engine.execute('exec sp_rename 'table_name."Old Column Name"', 'NewColumnName', 'COLUMN'')
Я не получаю никаких ошибок и журналов показать строку, которую я пытаюсь выполнить, но изменения не отражены в таблице.
Просмотр журналов:
2020-03-16 09:33:15,671 INFO sqlalchemy.engine.base.Engine exec sp_rename 'table_name."Old Column Name"', 'NewColumnName', 'COLUMN'
2020-03-16 09:33:15,671 INFO sqlalchemy.engine.base.Engine ()
2020-03-16 09:33:15,769 INFO sqlalchemy.engine.base.Engine ALTER TABLE table_name ALTER COLUMN [Column Name] date
2020-03-16 09:33:15,769 INFO sqlalchemy.engine.base.Engine ()
2020-03-16 09:33:15,773 INFO sqlalchemy.engine.base.Engine COMMIT
Показывает, где я пытаюсь переименовать столбец. но это не обязывает. После этого он показывает, где я меняю тип данных столбца, и показывает, что он фиксирует. Если я скопирую строку, которую я пытаюсь выполнить из журналов, в консоль DataGrip и запустю ее, изменение имени будет успешным.
Примечание. Все имена столбцов из CSV имеют пробелы, и многие имеют специальные персонажи. Окружение имен столбцов в скобках позаботилось об этой проблеме в других местах, где я выполняю raw SQL. Я экспериментировал со скобками и двойными кавычками в консоли DataGrip, поэтому я не думаю, что это проблема в этом случае. Я, конечно, могу ошибаться.
Любая помощь приветствуется.
python 2,7
pandas 0,20,3
sqlalchemy 1.3.13