所以我使用了SQLMODEL(带有Pedonic的SqlalChemy),我有类似于这个模型的东西:

class SequencedBaseModel(BaseModel):
    sequence_id: str = Field(alias="sequence_id")

    @declared_attr
    def sequence_id(cls):
        return Column(
            'sequence_id',
            VARCHAR(50),
            server_default=text(f"SELECT '{cls.__tablename__}_'"
                                f" + convert(varchar(10), NEXT VALUE FOR dbo.sequence)"))


class Project(SequencedBaseModel, table=True):
    pass

使用SqlAlChemy,我现在try 通过API插入行.请求-json如下所示:

{
    "name": "test_project"
}

因此,没有输入Sequence_id,将由数据库生成.SqlAlChemy生成类似以下内容的语句:

insert into Project (name, sequence_id) values ("test_project", null)

这不会错的,如果不是SQL Server...因此,我得到的例外是不能将NULL插入到SEQUENCE_ID列中.对于SQL Server,我们需要关键字default而不是null. 如果我执行以下语句

insert into Project (name, sequence_id) values ("test_project", default)

它起作用了...

你知道如何让SQL炼金术在有缺省值的情况下使用缺省值而不是NULL/NONE吗?

我还try 将equence_id更改为使用如下内容

sequence_id: str = Field(alias="sequence_id", default=sqlalchemy.sql.elements.TextClause('default'))

但这也不管用

推荐答案

使用server_onupdate参数可以应用带有‘Default’关键字的text函数,该关键字在执行UPDATE时已经定义.

请参阅适用于您的代码的以下示例:

    @declared_attr
    def sequence_id(cls):
        return Column(
            'sequence_id',
            VARCHAR(50),
            server_default=text(f"SELECT '{cls.__tablename__}_'"
                                f" + convert(varchar(10), NEXT VALUE FOR dbo.sequence)"),
            server_onupdate=text('default')
        )

The server_onupdate argument is part of SQLAlchemy's Column constructor.
It is used to specify the value that should be used when the column is updated.
It allows the definition of a SQL expression or keyword to be used instead of explicitly providing a value during updates.

Python相关问答推荐

在Python中,如何初始化集合列表脚本的输出

在for循环中保存和删除收件箱

情节生成的饼图文本超出页面边界

定义同侪组并计算同侪组分析

使用Python C API重新启动Python解释器

Python -Polars库中的滚动索引?

比较2 PD.数组的令人惊讶的结果

max_of_three使用First_select、second_select、

numba jitClass,记录类型为字符串

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

如何使用数组的最小条目拆分数组

如何获得每个组的时间戳差异?

将tdqm与cx.Oracle查询集成

基于索引值的Pandas DataFrame条件填充

如何从pandas的rame类继承并使用filepath实例化

迭代嵌套字典的值

从嵌套的yaml创建一个嵌套字符串,后面跟着点

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

基于行条件计算(pandas)

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''