You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在类构造函数中加入EventAgeId且插入时无需提供

解决方案

1. 修改构造函数,兼容自增ID的可选性

给EventAgeId参数设置默认值None,这样创建实例时无需传入该字段,同时保留后续赋值的能力:

class EventAges:
    def __init__(self, EventAgeName, EventAgeStart, EventAgeEnd, EventAgeId=None):
        self.EventAgeId = EventAgeId
        self.EventAgeName = EventAgeName
        self.EventAgeStart = EventAgeStart
        self.EventAgeEnd = EventAgeEnd

2. 修正插入方法的SQL逻辑

原代码的SQL语句存在字段数与占位符不匹配的问题,而且自增字段不需要手动插入,直接让数据库自动生成即可,插入后把生成的ID赋值给实例:

def add_event_ages(self, event_ages):
    # 自增字段EventAgeId无需在INSERT中指定,数据库会自动生成
    query = '''INSERT INTO EventAges (EventAgeName, EventAgeStart, EventAgeEnd) VALUES (?, ?, ?)'''
    values = (event_ages.EventAgeName, event_ages.EventAgeStart, event_ages.EventAgeEnd)
    self.cursor.execute(query, values)
    self.connection.commit()
    # 将数据库生成的自增ID赋值给实例的EventAgeId属性
    event_ages.EventAgeId = self.cursor.lastrowid
    return event_ages.EventAgeId

逻辑说明

  • 构造函数的EventAgeId=None设计,既满足插入时无需传参的需求,也支持从数据库查询数据后(带ID)实例化对象的场景。
  • 插入完成后通过lastrowid获取数据库生成的自增ID并赋值给实例,后续使用该实例时就能直接获取EventAgeId,解决查询时的字段缺失问题。

内容的提问来源于stack exchange,提问作者Adi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:22:34