Comment définir par DÉFAUT SUR la mise à JOUR CURRENT_TIMESTAMP dans mysql avec sqlalchemy?
Je suis à la création de la table avec sqlalchemy.
user = Table('users', Metadata,
Column('datecreated', TIMESTAMP,
server_default=text('CURRENT_TIMESTAMP')),
Column('datemodified', TIMESTAMP,
server_onupdate=text('CURRENT_TIMESTAMP')),
)
Mais ce ne sera pas réglé par DÉFAUT SUR la mise à JOUR CURRENT_TIMESTAMP.
- Je vérifier ce lien,
Comment obtenez-vous SQLAlchemy pour remplacer MySQL "sur la mise à jour CURRENT_TIMESTAMP" mais ce sera pour littérale j'ai besoin de fil en créer la définition de la table.
Thx d'avance 🙂
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sur MySQL 5.6 ou plus tard, veuillez défiler vers le bas pour la réponse pertinente. Les utilisateurs de versions plus anciennes, veuillez lire celui-ci.
Jusqu'À MySQL 5.6. dans une table, vous ne pouvez avoir qu'un 'automatisé' colonne de type TIMESTAMP.
À partir de: http://dev.mysql.com/doc/refman/5.5/en/timestamp.html
user = Table('users', Metadata, Column('datecreated', DateTime), Column('datemodified', TIMESTAMP, server_onupdate=text('CURRENT_TIMESTAMP')), )
Ensuite, il sera par DÉFAUT SUR la mise à JOUR CURRENT_TIMESTAMP?Vous pouvez détourner le server_default de définir également la mise à JOUR:
Cela génère la colonne suivante entrée:
Cependant, Mchl réponse s'applique toujours: Il peut être un seul automatisé de la colonne TIMESTAMP dans une table (http://dev.mysql.com/doc/refman/5.5/en/timestamp.html)
Également noter que l'ordre des colonnes est d'importance! Si vous avez une colonne de type TIMESTAMP, sans DÉFAUT et SUR la mise à JOUR des modificateurs, et c'est la première colonne de type TIMESTAMP dans votre table,
il sera automatiquement réglé par DÉFAUT CURRENT_TIMESTAMP SUR la mise à JOUR CURRENT_TIMESTAMP. (http://dev.mysql.com/doc/refman/5.5/en/timestamp.html)
Donc c'est très bien:
alors que ce n'est pas:
Afin de définir la datecreated' à l'heure actuelle au cours de la première entrée d'une ligne, il suffit de définir sa valeur explicitement à NULL. Encore une fois, de http://dev.mysql.com/doc/refman/5.5/en/timestamp.html:
server_onupdate=text('CURRENT_TIMESTAMP')
ferait l'affaire. si vous êtes sur mysql 5.6+ (qui, aujourd'hui, la plupart des gens), cela devrait être la accepté de répondre.De cette façon, vous utilisez SQLAlchemy intérieure
func.current_timestamp()
fonction.Si tout ce que vous voulez, c'est par DÉFAUT CURRENT_TIMESTAMP sur la mise à jour CURRENT_TIMESTAMP dans MySQL, puis il suffit de réglage de la colonne de type TIMESTAMP dans sqlalchemy non nullable œuvres