2015-04-08 18 views
7

Sto utilizzando SQLAlchemy per Flask per creare alcuni modelli. Il problema è che quasi tutte le mie colonne hanno bisogno di nullable=False, quindi sto cercando un modo per impostare questa opzione come predefinita quando si crea una colonna. Sicuramente potrei aggiungerli manualmente (come un esercizio di Vim), ma non ne ho voglia oggi. Per un riferimento, questo è come la mia configurazione (models.py) assomiglia:SQLAlchemy set default nullable = False

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) 

e molti altri. C'è un modo semplice per farlo?

Grazie in anticipo.

+1

da Null predefinito è FALSE –

+1

Aspetta, sto girando pazzo, nullable predefinito è falso? Era sqlite3 che ha il default nullable vero allora? –

+4

Il valore predefinito è 'nullable = True', ho controllato. –

risposta

15

Basta creare un involucro che lo

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

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

utilizzando functools.partial come raccomandato nei commenti

from functools import partial 
NullColumn = partial(Column,nullable=True) 
+8

Utilizzare invece functools.partial. –

+1

@PedroWerneck Non sono d'accordo ... ma volevo semplicemente mantenerlo semplice per ora: P (anche se ora che l'ho aggiunto ... questo è piuttosto semplice) –

Problemi correlati