python操作数据库,数据库字段设置为自增,为何不自增,一直报错的问题

今天在执行python代码时,有一个插入数据库的操作,可是一直报错,说是id没有默认值

sqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 1364 (HY000): Field 'id' doesn't have a default value
[SQL: INSERT INTO video_channel_group (name, fps, resolution, begin_date, end_date, is_active, is_can_delete, create_time, update_time) VALUES (%(name)s, %(fps)s, %(resolution)s, %(begin_date)s, %(end_date)s, %(is_active)s, %(is_can_delete)s, %(create_time)s, %(update_time)s)]
[parameters: {'name': '地方台', 'fps': 0, 'resolution': 0, 'begin_date': None, 'end_date': None, 'is_active': 1, 'is_can_delete': 1, 'create_time': datetime.datetime(2021, 12, 13, 6, 20, 52, 147757), 'update_time': datetime.datetime(2021, 12, 13, 6, 20, 52, 147769)}]
(Background on this error at: http://sqlalche.me/e/13/4xp6)

 翻了翻代码,并没有发现什么问题,id已经设置为自增字段,可还是报错。

class VideoChannelGroup(model.Base):
    # 表的名字:
    __tablename__ = 'video_channel_group'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(100), default='')
    fps = Column(Integer, default=0)
    resolution = Column(Integer, default=0)
    begin_date = Column(Date)
    end_date = Column(Date)
    is_active = Column(Boolean, default=True, comment='启停:1-启用,0-停用')
    is_can_delete = Column(Boolean, default=True, comment='是否允许删除:1-是,0-否')
    create_time = Column(TIMESTAMP)
    update_time = Column(TIMESTAMP)

最后经过多次排查,终于发现了问题,原因是python的数据库配置文件init.sql里面的sql语句,并没有调成自增。

CREATE TABLE `video_channel_group` (
  `id` int(11) unsigned NOT NULL  COMMENT 'ID',
  `name` varchar(100) DEFAULT '' COMMENT '频道模板名称',
  -- `threshold` decimal(3,2) DEFAULT 0.00 COMMENT '阈值',
  `fps` tinyint(4) DEFAULT '0' COMMENT '每秒帧数',
  `resolution` int(11) DEFAULT '0' COMMENT '分辨率(宽度)',
  -- `person_type_ids` varchar(500) DEFAULT '' COMMENT '人物类型ID',
  `begin_date` date DEFAULT NULL COMMENT '开始日期',
  `end_date` date DEFAULT NULL COMMENT '结束日期',
  `is_active` tinyint(4) DEFAULT '1' COMMENT '启停:1-启用,0-停用',
  `is_can_delete` tinyint(4) DEFAULT '1' COMMENT '是否允许删除:1-是,0-否',
  `update_time` timestamp NULL DEFAULT NULL,
  `create_time` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


---------------------------------------------------------------------
将上面第二行的id修改为`id` int(11) unsigned NOT NULL AUTO_INCREMENT  COMMENT 'ID',

照着上图修改完.sql语句就ok了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值