寻找在Sqlite3中创建参考代码的更好方法

时间:2018-08-03 21:08:17

标签: python sqlite

我需要为Sqlite3中的表创建参考代码。

它们将遵循“ P-1000”格式,并且在添加每个新项目时将增加1。

我有以下代码来找到最后的参考代码并将其递增。有没有更简单的方法或更容易处理这样的自定义标识符?

我不知道Sqlite3或其他查询语言是否以处理此类问题的方式构建。

def find_last_reference_code(self):
    query = QueryBuilder(self.table) \
        .select(['reference_code as last_reference_code']) \
        .from_() \
        .where('id = (select max(id) from projects)')
    self.execute(**query.build())
    return self.get_one()

def make_next_reference_code(self):
    last_project = self.find_last_reference_code()
    last_reference_code = last_project["last_reference_code"] if last_project else 'P-1000'
    reference_code = 'P-' + str(int(last_reference_code[2:]) + 1)
    return reference_code

不用担心QueryBuilder的东西,它只是我围绕SQL查询编写的一个包装器,但是如果有帮助,它的工作原理是:https://github.com/sarcoma/Invoicing/tree/master/invoicing/query_builder

1 个答案:

答案 0 :(得分:1)

我建议添加类似于以下内容的插入触发器:

  create trigger insert_refcode after insert on Table_name
  begin
     update Table_name
     set reference_code = printf('P-%04d', id+999)
     where rowid=new.rowid;
  end