Paramètre valeur par défaut dans sqlalchemy

je voudrais définir une valeur par défaut de colonne qui est basée sur une autre table dans mon modèle SQLAlchemy.

Actuellement j'ai ceci:

Column('version', Integer, default=1)

Ce dont j'ai besoin est (en gros):

Column('version', Integer, default="SELECT MAX(1, MAX(old_versions)) FROM version_table")

Comment puis-je implémenter ceci dans SQLAlchemy?

27
demandé sur Chris R 2012-03-14 20:34:15

2 réponses

documentation donne les possibilités suivantes pour default:

Un scalaire, Python appelable, ou ClauseElement représentant la valeur par défaut la valeur de cette colonne, qui sera invoquée lors de l'insertion si ce la colonne n'est pas spécifiée dans la clause valeurs de l'insert.

vous pouvez chercher à utiliser une fonction simple, ou vous pouvez juste être en mesure d'utiliser un select() objet.

Dans votre cas, peut-être quelque chose le long des lignes de:

from sqlalchemy.sql import select, func
...
Column('version', Integer, default=select([func.max(1,
    func.max(version_table.c.old_versions))]))
26
répondu voithos 2017-04-22 04:21:57

server_default

Column('version', Integer, server_default="SELECT MAX(1, MAX(old_versions)) FROM version_table")
0
répondu markmnl 2017-10-30 03:50:59