Ответ 1
Трудно понять, чего именно вы пытаетесь достичь из выдержки из вашего кода. Но я постараюсь угадать. Поэтому следующий ответ будет основан на моей догадке.
Строка 4 - вы импортируете вещи (DBSession, SmsDelivery, SmsMessagePart), формируя свои модули, а затем вы пытаетесь работать с такими объектами, как в своем приложении.
Ошибка показывает, что SmsDelivery является объектом mapper, поэтому он указывает на некоторую таблицу. объекты mapper должны привязываться к действительному соединению sqlalchemy.
Что говорит мне, что вы пропустили инициализацию объектов БД (соединение и привязку этого соединения к объектам mapper), как вы обычно делаете в своем коде приложения.
DBSession выглядит как объект сеанса SQLAlchemy - он должен также связывать соединение.
У Alembic уже есть соединение готово и открыто - для внесения изменений в схему db, запрашиваемых с помощью методов op. *.
Итак, должен быть способ получить это соединение.
В соответствии с руководством Alembic op.get_bind() вернет текущую привязку соединения:
Для полного взаимодействия с подключенной базой данных используйте "привязку", доступную из контекста:
from alembic import op
connection = op.get_bind()
Таким образом, вы можете использовать это соединение для запуска своих запросов в db.
PS. Я предполагаю, что вы хотели бы внести некоторые изменения в данные в своей таблице. Вы можете попытаться сформулировать эту модификацию в один запрос на обновление. У Alembic есть специальный метод для выполнения таких изменений - так что вам не нужно иметь дело с подключением.
alembic.operations.Operations.execute
execute(sql, execution_options=None)
Выполните данный SQL, используя текущий контекст миграции.
В контексте SQL script оператор выдается непосредственно в выходной поток. Однако результата возврата нет, поскольку эта функция ориентирована на создание изменения script, которое может работать в автономном режиме.
Параметры: sql - Любое юридическое выражение SQLAlchemy, включая:
- Строка: sqlalchemy.sql.expression.text().
- Конструкция sqlalchemy.sql.expression.insert().
- a sqlalchemy.sql.expression.update(),
- sqlalchemy.sql.expression.insert() или
- sqlalchemy.sql.expression.delete(). Довольно многое thats "исполняемый файл", как описано в учебнике Language Expression Language.