开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 17

不胜舟/Python_RESTfulAPI_Codegen

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
release
分支 (4)
标签 (8)
release
master
dev
feature-views
v2.1.2
v2.1.1
v2.1.0
v2.0.0
v2.0.1
v1.0.0
v0.1.1
v0.1.0
release
分支 (4)
标签 (8)
release
master
dev
feature-views
v2.1.2
v2.1.1
v2.1.0
v2.0.0
v2.0.1
v1.0.0
v0.1.1
v0.1.0
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
release
分支 (4)
标签 (8)
release
master
dev
feature-views
v2.1.2
v2.1.1
v2.1.0
v2.0.0
v2.0.1
v1.0.0
v0.1.1
v0.1.0
commons.py 4.89 KB
一键复制 编辑 原始数据 按行查看 历史
Nathan 提交于 2021年12月19日 14:44 +08:00 . 代码优化
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
some common tools or fuctions your api project maybe need!
"""
from werkzeug.routing import BaseConverter
from datetime import datetime as cdatetime
from datetime import date, time
from flask_sqlalchemy import Model
from sqlalchemy import DateTime, Numeric, Date, Time
import json
# 定义正则转换器
class ReConverter(BaseConverter):
""""""
def __init__(self, url_map, regex):
# 调用父类初始化方法
super(ReConverter, self).__init__(url_map)
# 保存正则表达式
self.regex = regex
def put_remove_none(**args):
"""
PUT方法更新时,如果参数不是必填,用reqparse检验参数会将数据转为空,
数据库有的字段可能不允许为空,故用该方法解决
:param args: 原始数据字典
:return: 除去None数据的字典
"""
for key in list(args.keys()):
if args[key] is None or args[key] == '':
del args[key]
continue
args = dict(args)
return args
# flask-sqlachemy查询结果(对象)转换为字典,下面的所有方法为一个模块,使用时直接调用该方法即可
def query_to_dict(models):
if isinstance(models, list):
if not models:
return []
if isinstance(models[0], Model):
lst = []
for model in models:
gen = model_to_dict(model)
dit = dict((g[0], g[1]) for g in gen)
lst.append(dit)
return lst
else:
res = result_to_dict(models)
return res
else:
if isinstance(models, Model):
gen = model_to_dict(models)
dit = dict((s[0], s[1]) for s in gen)
return dit
else:
res = dict(zip(models.keys(), models))
find_datetime(res)
return res
# 当结果为result对象列表时,result有key()方法
def result_to_dict(results):
res = [dict(zip(r.keys(), r)) for r in results]
# 这里r为一个字典,对象传递直接改变字典属性
for r in res:
find_datetime(r)
return res
def model_to_dict(model): # 这段来自于参考资源
for col in model.__table__.columns:
if isinstance(col.type, DateTime):
value = convert_datetime(getattr(model, col.name))
elif isinstance(col.type, Numeric):
value = float(getattr(model, col.name))
else:
value = getattr(model, col.name)
yield (col.name, value)
def find_datetime(value):
for v in value:
if isinstance(value[v], cdatetime):
value[v] = convert_datetime(value[v]) # 这里原理类似,修改的字典对象,不用返回即可修改
def convert_datetime(value):
"""
数据库datetime类型转时间字符串
:param value:
:return:
"""
if value:
if isinstance(value, (cdatetime, DateTime)):
return value.strftime("%Y-%m-%d %H:%M:%S")
elif isinstance(value, (date, Date)):
return value.strftime("%Y-%m-%d")
elif isinstance(value, (Time, time)):
return value.strftime("%H:%M:%S")
else:
return ""
def is_json(json_str):
"""
验证json字符串是否合法
:param json_str:
:return:
"""
try:
json.loads(json_str)
except ValueError:
return False
return True
def list_to_tree(id, parent_id, data):
"""
将列表结构数据转换为列表树状结构
:param id: 主键id 字符串
:param parentid: 父id 字符串
:param data:要转换的列表结构数据
:return:转换后的列表树状结构数据
"""
res = {}
for index, value in enumerate(data):
data[index][id] = int(data[index][id])
data[index][parent_id] = int(data[index][parent_id])
for v in data:
# 以id为key,存储当前元素数据
res.setdefault(v[id], v)
for v in data:
res.setdefault(v[parent_id], {}).setdefault('Children', []).append(v)
# 这里默认的关联关系,v的内存地址是一致的,所以后续修改只后,关联的结构也会变化。
return res[0]['Children']
def tree(data, root, root_field, node_field):
"""
解析list数据为树结构
:param data: 被解析的数据
:param root: 根节点值
:param root_field: 根节点字段
:param node_field: 节点字段
:return: list
"""
for index, value in enumerate(data):
data[index][node_field] = int(data[index][node_field])
data[index][root_field] = int(data[index][root_field])
l = []
for i in data:
if i.get(root_field) == root:
l.append(i)
for i in data:
node = i.get(node_field)
children = []
for j in data:
parent = j.get(root_field)
if node == parent:
children.append(j)
i['Children'] = children
return l
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

Python接口项目代码自动化生成项目
暂无标签
Apache-2.0
使用 Apache-2.0 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/resonate/Python_RESTfulAPI_Codegen.git
git@gitee.com:resonate/Python_RESTfulAPI_Codegen.git
resonate
Python_RESTfulAPI_Codegen
Python_RESTfulAPI_Codegen
release
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /