此代码失败,我不明白为什么。
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
添加更新()部分时失败。
答案 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')