Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在寻找在Sqlite3中创建参考代码的更好方法_Python_Sqlite - Fatal编程技术网

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

Python 正在寻找在Sqlite3中创建参考代码的更好方法,python,sqlite,Python,Sqlite,我需要为Sqlite3中的表创建参考代码 它们将遵循“p-1000”格式,并在添加每个新项目时增加一个 我有以下代码来查找最后一个参考代码并增加它。有没有一种更简单或更容易处理这样的自定义标识符的方法 我不知道Sqlite3或其他查询语言是否已经构建了处理这类事情的方法 def find_last_reference_code(self): query = QueryBuilder(self.table) \ .select(['reference_code as las

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

它们将遵循“p-1000”格式,并在添加每个新项目时增加一个

我有以下代码来查找最后一个参考代码并增加它。有没有一种更简单或更容易处理这样的自定义标识符的方法

我不知道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查询编写的一个包装器,但如果它的工作原理有帮助的话:

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

  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

很高兴能帮忙。