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

时间:2019-02-01 17:36:32

标签: python sqlalchemy insert auto-increment

我有以下查询:

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个。

仅使用Sequence函数,会引发一条错误提示,建议使用“ next_value”

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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