sqlalchemy_track_modifications sqlalchemy_database_uri one datatypes app and database postgresql sqlalchemy flask flask-sqlalchemy

sqlalchemy_database_uri - ¿Cómo puedo llenar automáticamente los campos de la base de datos SQLAlchemy?(Flask-SQLAlchemy)



sqlalchemy and flask (2)

Tengo un modelo de Usuario simple, definido así:

# models.py from datetime import datetime from myapp import db class User(db.Model): id = db.Column(db.Integer(), primary_key=True) email = db.Column(db.String(100), unique=True) password = db.Column(db.String(100)) date_updated = db.Column(db.DateTime()) def __init__(self, email, password, date_updated=None): self.email = email self.password = password self.date_updated = datetime.utcnow()

Cuando creo un nuevo objeto User, mi campo date_updated se establece en la hora actual. Lo que me gustaría hacer es hacerlo de modo que cada vez que guarde cambios en mi objeto Usuario, mi campo date_updated se establezca a la hora actual automáticamente.

Revisé la documentación, pero por mi vida parece que no puedo encontrar ninguna referencia a esto. Soy muy nuevo en SQLAlchemy, así que realmente no tengo experiencia previa para obtener.

Me encantaría algún comentario, gracias.


Simplemente agregue server_default o default argumento default a los campos de la columna:

created_on = db.Column(db.DateTime, server_default=db.func.now()) updated_on = db.Column(db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now())

Prefiero los nombres de columna {created,updated}_on . ;)

SQLAlchemy documenta los valores predeterminados de inserción / actualización de columnas .

[Editar]: Código actualizado para usar los argumentos de server_default en el código.

[Editar 2]: se reemplazó onupdate con los argumentos de server_onupdate .


date_created = db.Column(db.DateTime, default=db.func.current_timestamp()) date_modified = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp())