In SQLAlchemy dichiarativo, come si impostano i valori predefiniti per le colonne, in modo che le istanze di oggetti transitori o in sospeso abbiano quei valori predefiniti? Un breve esempio:Come imposto i valori predefiniti degli attributi in sqlalchemy dichiarativo?
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class A(Base):
__tablename__ = "A"
id = Column(Integer, primary_key=True)
word = Column(String, default="adefault")
a = A()
print a.word
Ingenuamente, io mi aspetterei che l'uscita da questo per essere adefault
. Ovviamente, l'output è in realtà None
. Anche quando si aggiunge a una sessione, rimane None
e viene riempito solo quando commetto (o svuoto) la sessione e rileggo il valore dell'istanza dal database.
C'è un modo per impostare un attributo predefinito senza svuotare l'istanza nel database? Ho provato a studiare la documentazione ColumnDefault
e non sembra che sia un modo ovvio per ispezionare il tipo/valore python, in modo da impostarlo manualmente in una baseclass dichiarativa personalizzata.
Vedere anche: https://stackoverflow.com/q/14002631/6646912 – krassowski