同步操作将从 华北电力大学-iDeal/Python_RESTfulAPI_Codegen 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python# -*- coding:utf-8 -*-# file:tablesMetadata.py.py# author:Nathan# datetime:2021年8月26日 14:56# software: PyCharm"""Get metadata of all tables"""from config.setting import Settingsclass TableMetadata(object):type_mapping = Settings.TYPE_MAPPINGtable_rule = Settings.TABLE_RULEdatabase_type = Settings.DATABASE_TYPE@classmethoddef reload(cls):cls.type_mapping = Settings.TYPE_MAPPINGcls.table_rule = Settings.TABLE_RULEcls.database_type = Settings.DATABASE_TYPE@classmethoddef get_tables_metadata(cls, metadata):# Get all tables objecttable_objs = metadata.tables.values()table_dict = {}# Traverse each table object to get corresponding attributes to form an attribute dictionaryfor table in table_objs:# get the table nametable_name = str(table)table_dict[table_name] = {}table_dict[table_name]['table_name'] = table_nametable_dict[table_name]['is_logic_delete'] = Falsetable_dict[table_name]['columns'] = {}table_dict[table_name]['foreign_keys'] = []table_dict[table_name]['business_key'] = {}# Check record deletion methodif table_name in cls.table_rule['table_record_delete_logic_way']:table_dict[table_name]['is_logic_delete'] = True# Check if the business key existsif table_name in cls.table_rule['table_business_key_gen_rule']:business_key = table_dict[table_name]['business_key']business_key['column'], business_key['rule'] = tuple(cls.table_rule['table_business_key_gen_rule'][table_name].items())[0]# 需要RSA加密的字段table_dict[table_name]['rsa_columns'] = []for key, value in Settings.RSA_TABLE_COLUMN.items():# 如果表名不匹配则进入下一轮循环if table_name != key:continuetable_dict[table_name]['rsa_columns'] = value# 初始化为空列表table_dict[table_name]['primaryKey'] = []# Traverse each columns to get corresponding attributesfor column in table.columns.values():table_dict[table_name]['columns'][str(column.name)] = {}table_dict[table_name]['columns'][str(column.name)]['name'] = str(column.name)for type_ in cls.type_mapping:if cls.database_type != type_['database']:continuefor python_type, sql_type_list in type_['data_map'].items():if str(column.type).lower() in sql_type_list:table_dict[table_name]['columns'][str(column.name)]['type'] = python_typebreaktable_dict[table_name]['columns'][str(column.name)].setdefault('type', 'str')if column.primary_key:table_dict[table_name]['primaryKey'].append(str(column.name))# 是否自动递增table_dict[table_name]['columns'][str(column.name)]['is_autoincrement'] = True if column.autoincrement is True else Falseif column.foreign_keys:# Traverse each foreign_key to get corresponding attributesfor foreign_key in column.foreign_keys:table_dict[table_name]['foreign_keys'].append({'key': str(column.name),'target_table': str(foreign_key.column).split('.')[0],'target_key': str(foreign_key.column).split('.')[1]})return table_dict
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。