E 'perché i dati esistenti non hanno alcun valore in quella nuova colonna, vale a dire null
. Causando così detto errore Quando si aggiunge una colonna non annullabile, è necessario decidere quale valore dare dati già esistenti
Va bene, i dati esistenti devono solo avere "lorem ipsum" per questa nuova colonna allora. Ma come lo faccio? Non riesco ad AGGIORNARE perché la colonna non è ancora lì.
Utilizzare il server_default
arg:
op.add_column('mytable', sa.Column(
'mycolumn',
sa.String(),
nullable=False,
server_default='lorem ipsum', # <--- add this
))
Ma, ma, non voglio che avesse valore predefinito
Inseriscila poi usando op.alter_column('mytable', 'mycolumn', server_default=None)
Ad es la funzione upgrade()
sarebbe:
def upgrade():
op.add_column('mytable', sa.Column('mycolumn', sa.String(), nullable=False, server_default='lorem ipsum'))
op.alter_column('mytable', 'mycolumn', server_default=None)
Non funziona ancora con il database Postgres. –