2012-02-12 47 views
2

我只是使用SQLAlchemy核心,并且无法获取sql以允许我添加where子句。我希望这个非常通用的更新代码能够在我所有的表格上工作。意图是这是对应于每个表的通用插入/更新函数的一部分。通过这样做,它允许使用非常简短的测试代码和简单的CLI实用程序,只需传递所有参数选项即可,而无需为每个表单独分配子命令。如何在SQLAlchemy中编写生成更新

它需要更多的调整来实现它,但应该现在就做更新就好了。但是,尽管SQLAlchemy引用了生成查询,但它并不区分选择&更新。我已经回顾了SQLAlchemy文档,基本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 

我无法找到这种方式建立一个更新的任何实例。任何建议?

回答

1

“where()”方法是生成的,因为它返回一个新的Update()对象。旧的没有修改:

u = u.where(...) 
+0

谢谢 - 这工作完美。我想我很高兴这是我的一个愚蠢的错误,而不是一个好工具中的错误。 :-) – 2012-02-16 05:03:17