我正在使用sqlalchemy进行项目。但是,我更习惯于Django的ORM。
我想知道,在sqlachemy ORM中,是否存在类似于Django模型的save()方法,我可以覆盖以在“提交”/“保存”时自动实现操作。
答案 0 :(得分:16)
您可以使用一些简单的crud方法扩展模型,以实现与Django ORM / ActiveRecord类似的东西:
# SQLAlchemy db_session setup omitted
...
Model = declarative_base(name='Model')
Model.query = db_session.query_property()
class CRUD():
def save(self):
if self.id == None:
db_session.add(self)
return db_session.commit()
def destroy(self):
db_session.delete(self)
return db_session.commit()
class User(Model, CRUD):
__tablename__ = 'users'
id = db.Column(db.integer, primary_key=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, email):
self.email = email
然后,您可以根据需要保存或销毁模型:
user = User('example@example.com')
user.save()
答案 1 :(得分:3)
可能您正在寻找ORM events。
答案 2 :(得分:3)
好消息给你!
我为此创建了包。它为SQLAlchemy实现了Active Record模式。
请参阅https://github.com/absent1706/sqlalchemy-mixins#active-record
它还有许多非常有用的功能,例如Django lookups that span relationship,声明性的渴望加载和SQAlchemy的可读print
。