我只是使用SQLAlchemy核心,并且无法获取sql以允许我添加where子句。我希望这个非常通用的更新代码适用于我的所有表。目的是这是对应于每个表的通用插入/更新函数的一部分。通过这种方式,它允许非常简短的测试代码和简单的CLI实用程序,可以简单地传递所有args&选项没有每个表的单独子命令的复杂性。
需要进行一些调整才能实现,但现在应该进行更新。然而,虽然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
我找不到以这种方式构建更新的任何示例。有什么建议吗?
答案 0 :(得分:1)
“where()”方法具有生成性,因为它返回一个新的Update()
对象。旧的未修改:
u = u.where(...)