首页 > 解决方案 > 如何解决:方言“默认”不支持 SQLAlchemy 中的序列增量

问题描述

我有以下查询:

seq = select([tab_setup.columns.ID]).order_by(tab_setup.columns.ID).limit(1)

sel = select([tab_Global.columns.ID_UNIQUE.label('DL_ID'), tab_Global.columns.CV_CNV.label('DL_Conv')]) \
        .where(tab_Global.columns.CV_CNV.isnot(None))

stmt = tab_setup.insert().from_select(['DL_ID', 'DL_Conv',next_value(Sequence(seq))] , sel)

据我了解,问题与表“tab_setup”中的自动填充 ID(自动增量)字段有关。传递值的正确方法是什么?

ID 字段是每行 1 的正常自动增量字段。

仅使用序列函数,它会引发错误,建议使用“next_value”

谢谢

标签: pythonsqlalchemyinsertauto-increment

解决方案


我找到的解决方案是在选择查询中添加:

func.row_number().over(order_by=tab_Global.columns.ID_UNIQUE)).label('ID')

这将为任何行生成一个序列号;然后如果起始编号不是 1,我创建变量 start_from = 10 并使用以下内容完成上述内容: (start_from + func.row_number()...)


推荐阅读