sqlalchemy query.update因AttributeName错误而失败

时间:2014-07-18 19:58:33

标签: python sqlalchemy

此代码失败,我不明白为什么。

from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker

engine = create_engine ( <connection string> )
meta = MetaData ( )
meta.reflect ( bind=engine )
session = sessionmaker ( )
session.configure ( bind=engine )

table = meta.tables['user']
s = session ( )
kwargs = {'employee_id': 'robbiee'}

s.query ( table ).filter_by ( **kwargs ).update ( {'home_email': 'my email yo'} )
s.commit ( )

错误是

AttributeError: 'Table' object has no attribute 'class_'

我只是尝试更新现有数据库中的记录。我可以使用原始sql,但尝试学习sqlalchemy方式。

提前感谢您的帮助。

编辑: 这个表达式可以正常工作。

for row in s.query ( table ).filter_by ( **kwargs ):
    print row

添加更新()部分时失败。

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的错误(使用会话更新时),经过多次尝试后无法解决。

所以,我使用了以下内容:

from sqlalchemy import update
u = update(table, table.c.employee_id == kwargs['employee_id'])
connection = engine.connect()
connection.execute(u, 'home_email': 'my email yo')