使用SQLAlchemy

时间:2015-11-17 14:29:51

标签: python mysql sqlalchemy

我想更新mysql数据库中的一行并使用该列的默认值。 我试着做这个

session.query(TableName).update({'column1': None,
                            'column2': None,
                            'column3': None}, False)

但它不起作用。任何想法?

2 个答案:

答案 0 :(得分:0)

要将设置一个值设置为默认值,该列必须已设置为NOT NULL(SQLAlchemy中为nullable=False)并具有DEFAULT。这可以在DB级别或在DB中定义结构时完成。

在更新查询中,如果将该值设置为NULL(或Python中的None),那么它将获得默认设置。 (这对MySQL来说是正确的,不确定SQLAlchemy是否试图干预。)

要将现有列更新为NOT NULL并为其指定DEFAULT,请参阅these SO questions

答案 1 :(得分:0)

如果您在该字段上具有服务器默认值,则应执行以下操作:

session.query(TableName).update({'column1': sa.text('default'),
                                 'column2': sa.text('default'),
                                 'column3': sa.text('default')}, False)