AttributeError:'Session'对象没有属性'save'

时间:2014-02-28 10:37:09

标签: python sqlalchemy

我正在尝试使用SQLAlchemy,但是在行中:

session.save(login)

我收到了这个错误:

AttributeError: 'Session' object has no attribute 'save'

这是我的代码:

def findOrCreateLogin(self, username, password):
    login = self.findLogin(username)
    if login:
        return login
    else:
        login = DBLogin(username,password)
        session.save(login)
        return login

2 个答案:

答案 0 :(得分:6)

SQLAlchemy会话没有.save()方法。您可以通过以下方式向SQLAlchemy会话添加内容:

session.add(login) # Adds a thing to the session.
session.commit() # Commits this session to the database (saves the data).

更多信息in the session docs

您的代码应如下所示:

def findOrCreateLogin(self, username, password):
    login = self.findLogin(username)
    if login:
        return login
    else:
        login = DBLogin(username,password)
        session.add(login)
        session.commit()
        return login

答案 1 :(得分:2)

实际上,session.save曾经存在于旧版本的SQLAlchemy中。

因此,如果其他人正在寻找一种新的insert or update功能方式 - 您应该使用merge

# if the keys ( primary etc .. ) matching an existing row - it will be updated
# if not - it will be "inserted" as new

new_obj = session.merge(obj)
session.commit()

VS

def findOrCreateLogin() ...