class SearchEngineCheck(Model):
    category = CharField()
    track_source_id = IntegerField(index=True)
    keyword = CharField()
    clip_len = IntegerField(null=True)
    has_error = BooleanField(default=False)
    created_at = DateTimeField(
        null=False,
        constraints=[SQL('DEFAULT CURRENT_TIMESTAMP')],
        help_text='使用数据库时间'
    )
    updated_at = DateTimeField(
        null=False,
        constraints=[
            SQL('DEFAULT CURRENT_TIMESTAMP'),
            SQL('ON UPDATE CURRENT_TIMESTAMP'),
        ]
    )

    class Meta:
        database = db
        table_name = 'search_engine_check'

上面的 peewee 模型定义会被翻译为下面的 mysql ddl 语句

-- crawler2.search_engine_check definition

CREATE TABLE `search_engine_check` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `category` varchar(255) NOT NULL,
  `track_source_id` int unsigned NOT NULL,
  `keyword` varchar(255) NOT NULL,
  `clip_len` int unsigned DEFAULT NULL,
  `has_error` tinyint(1) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `check_source` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `searchenginecheck_track_source_id` (`track_source_id`)
) ENGINE=InnoDB AUTO_INCREMENT=334 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

universe_king
3.4k 声望687 粉丝