【问题标题】:Elixir not creating my tables with default valuesElixir 没有使用默认值创建我的表
【发布时间】:2010-12-16 22:30:12
【问题描述】:
class MyObject(Entity):
    name = Field(Unicode(256), default=u'default name', nullable=False)

    using_options(shortnames=True)
    using_mapper_options(save_on_init=False)

    def __init__(self):
        self.name = None  

在这种情况下,我使用的是 MySQL,但也检查了 SQLite,我得到了相同的结果。它尊重nullable,但完全忽略default。我没有收到任何错误消息,它可以很好地创建表。我可以返回并添加默认值,但如果可能的话,我想避免这种严重的痛苦。

我已经尝试过使用其他字段类型,但仍然没有乐趣。

【问题讨论】:

    标签: python sqlalchemy python-elixir


    【解决方案1】:

    SQLAlchemy 中的default 关键字参数是 Python 运行时默认值,用于 INSERT 语句。当您确实需要数据库级别的默认值时,使用 PassiveDefault() 对象作为位置参数。

    【讨论】:

    • 我也很困惑。但是后来我发现这样的行为非常方便:当默认值改变时不需要更新数据库模式,除非它在没有 SQLAlchemy 层的其他地方使用。
    猜你喜欢
    • 2023-02-14
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    相关资源
    最近更新 更多