web-dev-qa-db-ja.com

SQLAlchemyはデフォルトのnullable = Falseを設定します

Flaskでいくつかのモデルを作成するためにSQLAlchemyを使用しています。問題は、ほぼすべての列にnullable=Falseが必要なため、このオプションをデフォルトとして設定する方法を探しています。列を作成するとき。確かに(Vimの演習として)手動で追加することはできますが、今日は気が進まないのです。参考までに、セットアップ(models.py)は次のようになります。

from flask.ext.sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     username = db.Column(db.String(80), nullable=False)

などなど。これを行う簡単な方法はありますか?

前もって感謝します。

13
John Bergson

それを設定するラッパーを作成するだけです

def NullColumn(*args,**kwargs):
    kwargs["nullable"] = kwargs.get("nullable",True)
    return db.Column(*args,**kwargs)

...
username = NullColumn(db.String(80))

コメントで推奨されているようにfunctools.partialを使用する

from functools import partial
NullColumn = partial(Column,nullable=True)
21
Joran Beasley