| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from alembic import op
- from sqlalchemy import engine_from_config
- from sqlalchemy.engine import reflection
- from sqlalchemy import text
- def _table_has_column(table, column):
- config = op.get_context().config
- engine = engine_from_config(
- config.get_section(config.config_ini_section), prefix='sqlalchemy.')
- connection = engine.connect()
- try:
- result = connection.execute(text(f"SELECT * FROM \"{table}\" LIMIT 1"))
- columns = result.keys()
- except Exception:
- return False
- finally:
- connection.close()
- has_column = column in columns
- return has_column
- def _has_table(table_name):
- config = op.get_context().config
- engine = engine_from_config(
- config.get_section(config.config_ini_section), prefix="sqlalchemy."
- )
- inspector = reflection.Inspector.from_engine(engine)
- tables = inspector.get_table_names()
- return table_name in tables
- def index_exists(table_name, index_name):
- config = op.get_context().config
- engine = engine_from_config(
- config.get_section(config.config_ini_section), prefix="sqlalchemy."
- )
- inspector = reflection.Inspector.from_engine(engine)
- indexes = inspector.get_indexes(table_name)
- return any(index['name'] == index_name for index in indexes)
|