首页 > 解决方案 > 自定义 ID Flask Sql Alchemy

问题描述

我正在尝试在表中创建自定义 ID。我要的身份证:

1909001 1909002

基本上格式是 yymm + 计数器,我想做一个查询来检查模型类中的最后一个 id。尝试使用此链接中的代码,但仍然没有运气。

class Task(db.Model):
    task_id = db.Column(db.Integer, primary_key=True)
    subject = db.Column(db.String(100), nullable=False)
    request_dt = db.Column(db.DateTime, nullable=False)
    request_detail = db.Column(db.Text, nullable=False)
    requestor = db.Column(db.String(100), nullable=False)

    def get_last_id(self):
        ym = date.today().strftime("%y%m")
        qry = self.query.filter(self.task_id.like("{}".format(ym))).order_by(self.task_id.desc()).first()
        if qry.task_id == '':
            return ym + '001'
        else:
            lastid = qry.task_id
            return "{:02d}".format(int(lastid[-3:]) + 1)

    def __init__(self, subject, req_dt, req_detail, reqtor):
        self.task_id = self.get_last_id()
        self.subject = subject
        self.request_detail = req_detail
        self.request_dt = req_dt
        self.requestor = reqtor

标签: pythonsqlalchemyflask-sqlalchemy

解决方案


所以基本上你可以返回 id 表单任务,只需将字符串添加在一起并 zfill id。

def get_last_id():
    qry = Task.query.order_by(Task.id.desc()).first()
    x = qry.id
    ym = date.today().strftime("%y%m")
    q_custom_id = "" + ym + str(x).zfill(3) + ""
    return q_custom_id

# print(Task.get_last_id())

我在数据库上有 3 个 ID,这将打印最后一个,ID 3 将变为:

1909003

我希望这对你有帮助:P


推荐阅读