Я читал в нескольких темах, что самый простой способ сделать это — отправить простой SQL, а не изменять объект таблицы. >
Мой запрос очень простой:
Код: Выделить всё
import sqlalchemy
engine = create_engine("postgresql://user@host:port/db")
query = sqlalchemy.text("alter table schema.table add column if not exists column int")
with engine.begin() as conn:
resultAddColumn = conn.execute(query)
# I also tried
# with engine.connect() as conn:
# resultAddColumn = conn.execute(query)
# conn.commit()
# and also
# conn = engine.connect()
# resultAddColumn = conn.execute(query)
# conn.commit()
# conn.close()
Но я использую это в скрипте, который Я вызываю (Windows) python script.py, и при запуске сценария SQLAlchemy зависает при команде conn.execute(query) (в трех методах, описанных выше). Единственный способ остановить это — убить терминал.
Я пробовал другие SQL-запросы, такие как SELECT, и они тоже работают нормально.
Что я делаю не так?
Спасибо.
SQLAlchemy 2.0.34 и Python 3.11.10.
Подробнее здесь: https://stackoverflow.com/questions/790 ... lter-table