Я просто использую ядро SQLAlchemy и не могу получить sql, чтобы разрешить мне добавлять предложения where.Я хотел бы, чтобы этот очень общий код обновления работал на всех моих таблицах.Намерение состоит в том, что это является частью общей функции вставки / обновления, которая соответствует каждой таблице.Делая это таким образом, вы получаете чрезвычайно короткий тестовый код и простые утилиты CLI, которые могут просто передавать все аргументы и параметры без сложности отдельных подкоманд для каждой таблицы.
Это займет еще несколько настроекчтобы получить его там, но делать обновления сейчас просто отлично.Однако, хотя SQLAlchemy относится к генеративным запросам, он не различает выборки и обновления.Я просмотрел документацию по SQLAlchemy, Essential SQLAlchemy, stackoverflow и несколько репозиториев исходного кода и ничего не нашел.
u = self._table.update()
non_key_kw = {}
for column in self._table.c:
if column.name in self._table.primary_key:
u.where(self._table.c[column.name] == kw[column.name])
else:
col_name = column.name
non_key_kw[column.name] = kw[column.name]
print u
result = u.execute(kw)
Что не получается - похоже, он не распознает предложение where:
UPDATE struct SET year=?, month=?, day=?, distance=?, speed=?, slope=?, temp=?
FAIL
И я не могу найти никаких примеров создания обновления таким способом.Любые рекомендации?