开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
release
分支 (4)
标签 (10)
release
master
dev
dev_flasgger_backup
v2.3.0
v2.2.0
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)
标签 (10)
release
master
dev
dev_flasgger_backup
v2.3.0
v2.2.0
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)
标签 (10)
release
master
dev
dev_flasgger_backup
v2.3.0
v2.2.0
v2.1.2
v2.1.1
v2.1.0
v2.0.0
v2.0.1
v1.0.0
v0.1.1
v0.1.0
checkTable.py 4.79 KB
一键复制 编辑 原始数据 按行查看 历史
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# file:checkTable.py
# author:Itsuka
# datetime:2021年8月25日 9:53
# software: PyCharm
"""
检验表是否符合生成规则
"""
import keyword
from utils.loggings import loggings
from utils.tablesMetadata import TableMetadata
class CheckTable(object):
# check the Primary key
# 检查table主键
@classmethod
def check_primary_key(cls, table_dict, session_id, ip):
"""
根据代码生成模式,自动读取所有表或所需表,检验主键后返回合规的表列表
:return: 符合规范的表名列表,即有且仅有一个主键,没有符合规范的情况下返回None
"""
available_tables = []
invalid_tables = []
for table in table_dict.values():
if table['is_view']:
# 是一个视图,不进行检查
continue
elif len(table['primary_key_columns']) == 0:
# 表中没有主键
invalid_tables.append(table['table_name'])
loggings.warning(1, 'table {0} do not have a primary key'.format(table['table_name']), session_id, ip)
# elif len(table['primary_key_columns']) > 1:
# # 表中有复数个主键
# invalid_tables.append(table['table_name'])
# loggings.warning(1, 'table {0} has multiple primary keys'.format(table['table_name']))
else:
available_tables.append(table['table_name'])
return available_tables, invalid_tables
# check keywords of python in tables
# 检查表名和字段名,是否和Python的关键字冲突
@classmethod
def check_keyword_conflict(cls, table_dict, session_id, ip):
"""
check whether the table name or column name is a keyword of python
:return: True while no table name is a keyword, else return False
"""
available_table = []
invalid_table = []
for table in table_dict.values():
if table['is_view']:
# 是一个视图,不进行检查
continue
flag = True
# 检查表名是否为python关键字
if keyword.iskeyword(table['table_name']):
loggings.warning(1, 'table "{0}" is a keyword of python'.format(table['table_name']), session_id, ip)
flag = False
for column in table['columns'].values():
# 检查表字段是否为python关键字
if keyword.iskeyword(column['name']):
loggings.warning(1, 'column "{0}.{1}" is a keyword of python'.format(table['table_name'],
column['name']), session_id, ip)
flag = False
if flag:
available_table.append(table['table_name'])
else:
invalid_table.append(table['table_name'])
return available_table, invalid_table
# 入口函数定义
@classmethod
def main(cls, metadata, reflection_views, session_id, ip):
"""
建立数据库连接时对表进行检查,筛去没有唯一自增主键、表名/字段名与Python关键字有冲突的表
:param metadata: 数据库元数据
:param reflection_views: 需要反射的视图名称列表
"""
table_dict = TableMetadata.get_tables_metadata(metadata, reflection_views)
invalid_tables = {}
# check table primary key
available_table, invalid_table = cls.check_primary_key(table_dict, session_id, ip)
invalid_tables['primary_key'] = invalid_table
for invalid in invalid_table:
table_dict.pop(invalid)
# check the keyword
available_table, invalid_table = cls.check_keyword_conflict(table_dict, session_id, ip)
available_tables = available_table
invalid_tables['keyword'] = invalid_table
for invalid in invalid_table:
table_dict.pop(invalid)
if len(invalid_tables) > 0:
loggings.warning(
1,
"A total of {0} tables check passed."
"The following {1} tables do not meet the specifications and cannot be generated: {2}."
.format(
len(available_tables),
len(invalid_tables['primary_key'] + invalid_tables['keyword']),
",".join(invalid_tables['primary_key'] + invalid_tables['keyword'])
),
session_id,
ip
)
return table_dict, invalid_tables
loggings.info(1, "All table checks passed, a total of {0} tables.".format(len(available_tables)), session_id, ip)
return table_dict, invalid_tables
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

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

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

取消
提交

简介

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

发行版

暂无发行版

贡献者

全部

近期动态

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

搜索帮助

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

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