Python SQLAlchemy set default nullable=False
我正在使用SQLAlchemy for Flask创建一些模型。问题是,几乎我所有的列都需要Python SQLAlchemy set default nullable=False,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我正在使用SQLAlchemy for Flask创建一些模型。问题是,几乎我所有的列都需要nullable=False,因此我正在寻找一种方法,在创建列时将此选项设置为默认值。当然我可以手动添加它们(作为Vim练习),但我今天不想这样做。作为参考,我的设置(models.py)如下所示: from flask.ext.sqlalchemy import SQLAlchemy db = SQLAlchemy() class User(db.Model): id = db.Colum
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)
还有更多。有没有一个简单的方法可以做到这一点
提前感谢。只需创建一个包装器来设置它
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)
等等,我快疯了,默认值为null是假的?是sqlite3的默认值为nullable true吗?默认值为
nullable=true
,我选中了。嗯,不,默认情况下它不为NULL。。。(请注意,此字段仅在创建数据库时使用)不,我发誓,您必须手动添加NOTNULL才能使其不为空。我检查了源代码。除非该列用作主键列,否则默认值为nullable=True,在这种情况下,默认值为nullable=false改为使用functools.partial。@PedroWerneck我不同意。。。但是现在只想保持它的简单性:P(尽管现在我添加了它…这非常简单)functools.partial
在Python 3.6+中搞砸了类型推断。输入import Type时需要;NullColumn:键入[Column]=partial(Column,nullable=True)
以使lint和/或autocomplete继续工作,或者只使用简单版本。