我正在尝试使用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
答案 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).
您的代码应如下所示:
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() ...