在 Flask-SQLAlchemy 教程中,定义了 User 模型的构造函数:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
对于包含两列的表,这可能是可以接受的,但如果我的表包含 10 列以上怎么办?做构造函数have每次定义新模型时都要定义?
在大多数情况下,不在模型类中定义构造函数会给您带来正确的行为。
Flask-SQLAlchemy 基础模型类(也是 SQLAlchemy 声明性基类)定义一个构造函数 https://docs.sqlalchemy.org/en/latest/orm/tutorial.html#create-an-instance-of-the-mapped-class那只需要**kwargs
并存储给定的所有参数,因此实际上没有必要定义构造函数。
如果您确实需要定义构造函数来执行某些特定于模型的初始化,请按如下所示操作:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, **kwargs):
super(User, self).__init__(**kwargs)
# do custom initialization here
通过让基类处理**kwargs
您可以摆脱初始化模型字段的复杂性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)