使用flask-sqlacodegen
先通过在数据库创建数据表格信息,
再将在数据库表里的数据同步到模型库的方法。
第一步复制该代码到数据库管理器运行,右键对应数据库选择命令列界面,即可在数据库中创建表
CREATE TABLE `app_access_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` bigint(20) NOT NULL DEFAULT '0' COMMENT 'uid',
`referer_url` varchar(255) NOT NULL DEFAULT '' COMMENT '当前访问的refer',
`target_url` varchar(255) NOT NULL DEFAULT '' COMMENT '访问的url',
`query_params` text NOT NULL COMMENT 'get和post参数',
`ua` varchar(255) NOT NULL DEFAULT '' COMMENT '访问ua',
`ip` varchar(32) NOT NULL DEFAULT '' COMMENT '访问ip',
`note` varchar(1000) NOT NULL DEFAULT '' COMMENT 'json格式备注字段',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户访问记录表';
DROP TABLE IF EXISTS `app_error_log`;
CREATE TABLE `app_error_log` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`referer_url` varchar(255) NOT NULL DEFAULT '' COMMENT '当前访问的refer',
`target_url` varchar(255) NOT NULL DEFAULT '' COMMENT '访问的url',
`query_params` text NOT NULL COMMENT 'get和post参数',
`content` longtext NOT NULL COMMENT '日志内容',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='app错误日表';
第二步使用以下代码即可在flask项目中生成相应的py文件模型代码。
flask-sqlacodegen 'mysql://root:[email protected]/food_db' --tables app_access_log --outfile "common/models/log/AppAccessLog.py" --flask
flask-sqlacodegen 'mysql://root:[email protected]/food_db' --tables app_error_log --outfile "common/models/log/AppErrorLog.py" --flask
# coding: utf-8
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class AppErrorLog(db.Model):
__tablename__ = 'app_error_log'
id = db.Column(db.Integer, primary_key=True)
referer_url = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue(), info='当前访问的refer')
target_url = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue(), info='访问的url')
query_params = db.Column(db.Text, nullable=False, info='get和post参数')
content = db.Column(db.String, nullable=False, info='日志内容')
created_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue(), info='插入时间')
第三步,对py模型库根据项目需要进行相应的配置更改
如图所示即将db从application.py中导入而不是在模型库中创建db。