Kum*_*ran 6 python sqlalchemy flask python-2.7 flask-sqlalchemy
下面我有一个Flask-SQLAlchemy表的模型User.
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP"))
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP"))
def __init__(self):
#self.name = name
self.name = None
def add_user(self, name):
self.name = name
Run Code Online (Sandbox Code Playgroud)
这add_user是一个自定义方法.因此,如果我调用该add_user方法,它应该将名称添加到User表中.
同样,如何在该模型中为CRUD操作编写自定义方法?
Pat*_*len 14
您可能希望使用类方法来实现此目的.
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP"))
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP"))
def __init__(self, name):
self.name = name
@classmethod
def create(cls, **kw):
obj = cls(**kw)
db.session.add(obj)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
这样,您可以使用User.create(name="kumaran")创建将提交到数据库的新用户.
更好的是,为这个方法和其他类似方法创建一个mixin是个好主意,这样可以在其他模型中轻松地重用这些功能:
class BaseMixin(object):
@classmethod
def create(cls, **kw):
obj = cls(**kw)
db.session.add(obj)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用多重继承在模型中重用此功能,如下所示:
class User(BaseMixin, db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP"))
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP"))
def __init__(self, name):
self.name = name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7736 次 |
| 最近记录: |