2025-02-18 11:36:33 +08:00
|
|
|
|
from config.env import DataBaseConfig
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
class CommonConstant:
|
|
|
|
|
|
"""
|
|
|
|
|
|
常用常量
|
2024-07-13 18:15:35 +08:00
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
WWW: www主域
|
|
|
|
|
|
HTTP: http请求
|
|
|
|
|
|
HTTPS: https请求
|
2024-07-14 22:37:35 +08:00
|
|
|
|
LOOKUP_RMI: RMI远程方法调用
|
|
|
|
|
|
LOOKUP_LDAP: LDAP远程方法调用
|
|
|
|
|
|
LOOKUP_LDAPS: LDAPS远程方法调用
|
2024-07-08 16:47:17 +08:00
|
|
|
|
YES: 是否为系统默认(是)
|
|
|
|
|
|
NO: 是否为系统默认(否)
|
2024-07-11 16:36:04 +08:00
|
|
|
|
DEPT_NORMAL: 部门正常状态
|
|
|
|
|
|
DEPT_DISABLE: 部门停用状态
|
2024-07-03 16:41:20 +08:00
|
|
|
|
UNIQUE: 校验是否唯一的返回标识(是)
|
|
|
|
|
|
NOT_UNIQUE: 校验是否唯一的返回标识(否)
|
|
|
|
|
|
"""
|
2024-07-12 11:19:07 +08:00
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
WWW = 'www.'
|
|
|
|
|
|
HTTP = 'http://'
|
|
|
|
|
|
HTTPS = 'https://'
|
2024-07-14 22:37:35 +08:00
|
|
|
|
LOOKUP_RMI = 'rmi:'
|
|
|
|
|
|
LOOKUP_LDAP = 'ldap:'
|
|
|
|
|
|
LOOKUP_LDAPS = 'ldaps:'
|
2024-07-08 16:47:17 +08:00
|
|
|
|
YES = 'Y'
|
|
|
|
|
|
NO = 'N'
|
2024-07-11 16:36:04 +08:00
|
|
|
|
DEPT_NORMAL = '0'
|
|
|
|
|
|
DEPT_DISABLE = '1'
|
2024-07-03 16:41:20 +08:00
|
|
|
|
UNIQUE = True
|
|
|
|
|
|
NOT_UNIQUE = False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HttpStatusConstant:
|
|
|
|
|
|
"""
|
|
|
|
|
|
返回状态码
|
2024-07-13 18:15:35 +08:00
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
SUCCESS: 操作成功
|
|
|
|
|
|
CREATED: 对象创建成功
|
|
|
|
|
|
ACCEPTED: 请求已经被接受
|
|
|
|
|
|
NO_CONTENT: 操作已经执行成功,但是没有返回数据
|
|
|
|
|
|
MOVED_PERM: 资源已被移除
|
|
|
|
|
|
SEE_OTHER: 重定向
|
|
|
|
|
|
NOT_MODIFIED: 资源没有被修改
|
|
|
|
|
|
BAD_REQUEST: 参数列表错误(缺少,格式不匹配)
|
|
|
|
|
|
UNAUTHORIZED: 未授权
|
|
|
|
|
|
FORBIDDEN: 访问受限,授权过期
|
|
|
|
|
|
NOT_FOUND: 资源,服务未找到
|
|
|
|
|
|
BAD_METHOD: 不允许的http方法
|
|
|
|
|
|
CONFLICT: 资源冲突,或者资源被锁
|
|
|
|
|
|
UNSUPPORTED_TYPE: 不支持的数据,媒体类型
|
|
|
|
|
|
ERROR: 系统内部错误
|
|
|
|
|
|
NOT_IMPLEMENTED: 接口未实现
|
|
|
|
|
|
WARN: 系统警告消息
|
|
|
|
|
|
"""
|
2024-07-12 11:19:07 +08:00
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
SUCCESS = 200
|
|
|
|
|
|
CREATED = 201
|
|
|
|
|
|
ACCEPTED = 202
|
|
|
|
|
|
NO_CONTENT = 204
|
|
|
|
|
|
MOVED_PERM = 301
|
|
|
|
|
|
SEE_OTHER = 303
|
|
|
|
|
|
NOT_MODIFIED = 304
|
|
|
|
|
|
BAD_REQUEST = 400
|
|
|
|
|
|
UNAUTHORIZED = 401
|
|
|
|
|
|
FORBIDDEN = 403
|
|
|
|
|
|
NOT_FOUND = 404
|
|
|
|
|
|
BAD_METHOD = 405
|
|
|
|
|
|
CONFLICT = 409
|
|
|
|
|
|
UNSUPPORTED_TYPE = 415
|
|
|
|
|
|
ERROR = 500
|
|
|
|
|
|
NOT_IMPLEMENTED = 501
|
|
|
|
|
|
WARN = 601
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-14 22:37:35 +08:00
|
|
|
|
class JobConstant:
|
|
|
|
|
|
"""
|
|
|
|
|
|
定时任务常量
|
|
|
|
|
|
|
2024-07-31 10:59:01 +08:00
|
|
|
|
JOB_ERROR_LIST: 定时任务禁止调用模块及违规字符串列表
|
2024-07-14 22:37:35 +08:00
|
|
|
|
JOB_WHITE_LIST: 定时任务允许调用模块列表
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
JOB_ERROR_LIST = [
|
|
|
|
|
|
'app',
|
|
|
|
|
|
'config',
|
|
|
|
|
|
'exceptions',
|
2024-07-31 10:59:01 +08:00
|
|
|
|
'import ',
|
2024-07-14 22:37:35 +08:00
|
|
|
|
'middlewares',
|
|
|
|
|
|
'module_admin',
|
2024-07-31 10:59:01 +08:00
|
|
|
|
'open(',
|
|
|
|
|
|
'os.',
|
2024-07-14 22:37:35 +08:00
|
|
|
|
'server',
|
|
|
|
|
|
'sub_applications',
|
2024-07-31 10:59:01 +08:00
|
|
|
|
'subprocess.',
|
|
|
|
|
|
'sys.',
|
2024-07-14 22:37:35 +08:00
|
|
|
|
'utils',
|
2024-07-31 10:59:01 +08:00
|
|
|
|
'while ',
|
|
|
|
|
|
'__import__',
|
|
|
|
|
|
'"',
|
|
|
|
|
|
"'",
|
|
|
|
|
|
',',
|
|
|
|
|
|
'?',
|
|
|
|
|
|
':',
|
|
|
|
|
|
';',
|
|
|
|
|
|
'/',
|
|
|
|
|
|
'|',
|
|
|
|
|
|
'+',
|
|
|
|
|
|
'-',
|
|
|
|
|
|
'=',
|
|
|
|
|
|
'~',
|
|
|
|
|
|
'!',
|
|
|
|
|
|
'#',
|
|
|
|
|
|
'$',
|
|
|
|
|
|
'%',
|
|
|
|
|
|
'^',
|
|
|
|
|
|
'&',
|
|
|
|
|
|
'*',
|
|
|
|
|
|
'<',
|
|
|
|
|
|
'>',
|
|
|
|
|
|
'(',
|
|
|
|
|
|
')',
|
|
|
|
|
|
'[',
|
|
|
|
|
|
']',
|
|
|
|
|
|
'{',
|
|
|
|
|
|
'}',
|
|
|
|
|
|
' ',
|
2024-07-14 22:37:35 +08:00
|
|
|
|
]
|
|
|
|
|
|
JOB_WHITE_LIST = ['module_task']
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
class MenuConstant:
|
|
|
|
|
|
"""
|
|
|
|
|
|
菜单常量
|
2024-07-13 18:15:35 +08:00
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
TYPE_DIR: 菜单类型(目录)
|
|
|
|
|
|
TYPE_MENU: 菜单类型(菜单)
|
|
|
|
|
|
TYPE_BUTTON: 菜单类型(按钮)
|
|
|
|
|
|
YES_FRAME: 是否菜单外链(是)
|
|
|
|
|
|
NO_FRAME: 是否菜单外链(否)
|
|
|
|
|
|
LAYOUT: Layout组件标识
|
|
|
|
|
|
PARENT_VIEW: ParentView组件标识
|
|
|
|
|
|
INNER_LINK: InnerLink组件标识
|
|
|
|
|
|
"""
|
2024-07-12 11:19:07 +08:00
|
|
|
|
|
2024-07-03 16:41:20 +08:00
|
|
|
|
TYPE_DIR = 'M'
|
|
|
|
|
|
TYPE_MENU = 'C'
|
|
|
|
|
|
TYPE_BUTTON = 'F'
|
|
|
|
|
|
YES_FRAME = 0
|
|
|
|
|
|
NO_FRAME = 1
|
|
|
|
|
|
LAYOUT = 'Layout'
|
|
|
|
|
|
PARENT_VIEW = 'ParentView'
|
|
|
|
|
|
INNER_LINK = 'InnerLink'
|
2025-02-14 17:42:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GenConstant:
|
|
|
|
|
|
"""
|
|
|
|
|
|
代码生成常量
|
2025-02-18 11:36:33 +08:00
|
|
|
|
|
|
|
|
|
|
TPL_CRUD: 单表(增删改查
|
|
|
|
|
|
TPL_TREE: 树表(增删改查)
|
|
|
|
|
|
TPL_SUB: 主子表(增删改查)
|
|
|
|
|
|
TREE_CODE: 树编码字段
|
|
|
|
|
|
TREE_PARENT_CODE: 树父编码字段
|
|
|
|
|
|
TREE_NAME: 树名称字段
|
|
|
|
|
|
PARENT_MENU_ID: 上级菜单ID字段
|
|
|
|
|
|
PARENT_MENU_NAME: 上级菜单名称字段
|
|
|
|
|
|
COLUMNTYPE_STR: 数据库字符串类型
|
|
|
|
|
|
COLUMNTYPE_TEXT: 数据库文本类型
|
|
|
|
|
|
COLUMNTYPE_TIME: 数据库时间类型
|
|
|
|
|
|
COLUMNTYPE_GEOMETRY: 数据库字空间类型
|
|
|
|
|
|
COLUMNTYPE_NUMBER: 数据库数字类型
|
|
|
|
|
|
COLUMNNAME_NOT_EDIT: 页面不需要编辑字段
|
|
|
|
|
|
COLUMNNAME_NOT_LIST: 页面不需要显示的列表字段
|
|
|
|
|
|
COLUMNNAME_NOT_QUERY: 页面不需要查询字段
|
|
|
|
|
|
BASE_ENTITY: Entity基类字段
|
|
|
|
|
|
TREE_ENTITY: Tree基类字段
|
|
|
|
|
|
HTML_INPUT: 文本框
|
|
|
|
|
|
HTML_TEXTAREA: 文本域
|
|
|
|
|
|
HTML_SELECT: 下拉框
|
|
|
|
|
|
HTML_RADIO: 单选框
|
|
|
|
|
|
HTML_CHECKBOX: 复选框
|
|
|
|
|
|
HTML_DATETIME: 日期控件
|
|
|
|
|
|
HTML_IMAGE_UPLOAD: 图片上传控件
|
|
|
|
|
|
HTML_FILE_UPLOAD: 文件上传控件
|
|
|
|
|
|
HTML_EDITOR: 富文本控件
|
|
|
|
|
|
TYPE_DECIMAL: 高精度计算类型
|
|
|
|
|
|
TYPE_DATE: 时间类型
|
|
|
|
|
|
QUERY_LIKE: 模糊查询
|
|
|
|
|
|
QUERY_EQ: 相等查询
|
|
|
|
|
|
REQUIRE: 需要
|
|
|
|
|
|
DB_TO_SQLALCHEMY_TYPE_MAPPING: 数据库类型与sqlalchemy类型映射
|
|
|
|
|
|
DB_TO_PYTHON_TYPE_MAPPING: 数据库类型与python类型映射
|
2025-02-14 17:42:36 +08:00
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
TPL_CRUD = 'crud'
|
|
|
|
|
|
TPL_TREE = 'tree'
|
|
|
|
|
|
TPL_SUB = 'sub'
|
|
|
|
|
|
TREE_CODE = 'treeCode'
|
|
|
|
|
|
TREE_PARENT_CODE = 'treeParentCode'
|
|
|
|
|
|
TREE_NAME = 'treeName'
|
|
|
|
|
|
PARENT_MENU_ID = 'parentMenuId'
|
|
|
|
|
|
PARENT_MENU_NAME = 'parentMenuName'
|
2025-02-18 11:36:33 +08:00
|
|
|
|
COLUMNTYPE_STR = (
|
|
|
|
|
|
['character varying', 'varchar', 'character', 'char']
|
|
|
|
|
|
if DataBaseConfig.db_type == 'postgresql'
|
|
|
|
|
|
else ['char', 'varchar', 'nvarchar', 'varchar2']
|
|
|
|
|
|
)
|
|
|
|
|
|
COLUMNTYPE_TEXT = (
|
|
|
|
|
|
['text', 'citext'] if DataBaseConfig.db_type == 'postgresql' else ['tinytext', 'text', 'mediumtext', 'longtext']
|
|
|
|
|
|
)
|
|
|
|
|
|
COLUMNTYPE_TIME = (
|
|
|
|
|
|
[
|
|
|
|
|
|
'date',
|
|
|
|
|
|
'time',
|
|
|
|
|
|
'time with time zone',
|
|
|
|
|
|
'time without time zone',
|
|
|
|
|
|
'timestamp',
|
|
|
|
|
|
'timestamp with time zone',
|
|
|
|
|
|
'timestamp without time zone',
|
|
|
|
|
|
'interval',
|
|
|
|
|
|
]
|
|
|
|
|
|
if DataBaseConfig.db_type == 'postgresql'
|
|
|
|
|
|
else ['datetime', 'time', 'date', 'timestamp']
|
|
|
|
|
|
)
|
|
|
|
|
|
COLUMNTYPE_GEOMETRY = (
|
|
|
|
|
|
['point', 'line', 'lseg', 'box', 'path', 'polygon', 'circle']
|
|
|
|
|
|
if DataBaseConfig.db_type == 'postgresql'
|
|
|
|
|
|
else [
|
|
|
|
|
|
'geometry',
|
|
|
|
|
|
'point',
|
|
|
|
|
|
'linestring',
|
|
|
|
|
|
'polygon',
|
|
|
|
|
|
'multipoint',
|
|
|
|
|
|
'multilinestring',
|
|
|
|
|
|
'multipolygon',
|
|
|
|
|
|
'geometrycollection',
|
|
|
|
|
|
]
|
|
|
|
|
|
)
|
2025-02-14 17:42:36 +08:00
|
|
|
|
COLUMNTYPE_NUMBER = [
|
|
|
|
|
|
'tinyint',
|
|
|
|
|
|
'smallint',
|
|
|
|
|
|
'mediumint',
|
|
|
|
|
|
'int',
|
|
|
|
|
|
'number',
|
|
|
|
|
|
'integer',
|
|
|
|
|
|
'bit',
|
|
|
|
|
|
'bigint',
|
|
|
|
|
|
'float',
|
|
|
|
|
|
'double',
|
|
|
|
|
|
'decimal',
|
|
|
|
|
|
]
|
|
|
|
|
|
COLUMNNAME_NOT_EDIT = ['id', 'create_by', 'create_time', 'del_flag']
|
|
|
|
|
|
COLUMNNAME_NOT_LIST = ['id', 'create_by', 'create_time', 'del_flag', 'update_by', 'update_time']
|
|
|
|
|
|
COLUMNNAME_NOT_QUERY = ['id', 'create_by', 'create_time', 'del_flag', 'update_by', 'update_time', 'remark']
|
|
|
|
|
|
BASE_ENTITY = ['createBy', 'createTime', 'updateBy', 'updateTime', 'remark']
|
|
|
|
|
|
TREE_ENTITY = ['parentName', 'parentId', 'orderNum', 'ancestors', 'children']
|
|
|
|
|
|
HTML_INPUT = 'input'
|
|
|
|
|
|
HTML_TEXTAREA = 'textarea'
|
|
|
|
|
|
HTML_SELECT = 'select'
|
|
|
|
|
|
HTML_RADIO = 'radio'
|
|
|
|
|
|
HTML_CHECKBOX = 'checkbox'
|
|
|
|
|
|
HTML_DATETIME = 'datetime'
|
|
|
|
|
|
HTML_IMAGE_UPLOAD = 'imageUpload'
|
|
|
|
|
|
HTML_FILE_UPLOAD = 'fileUpload'
|
|
|
|
|
|
HTML_EDITOR = 'editor'
|
|
|
|
|
|
TYPE_DECIMAL = 'Decimal'
|
|
|
|
|
|
TYPE_DATE = ['date', 'time', 'datetime']
|
|
|
|
|
|
QUERY_LIKE = 'LIKE'
|
|
|
|
|
|
QUERY_EQ = 'EQ'
|
|
|
|
|
|
REQUIRE = '1'
|
2025-02-18 11:36:33 +08:00
|
|
|
|
DB_TO_SQLALCHEMY_TYPE_MAPPING = (
|
|
|
|
|
|
{
|
|
|
|
|
|
'boolean': 'Boolean',
|
|
|
|
|
|
'smallint': 'SmallInteger',
|
|
|
|
|
|
'integer': 'Integer',
|
|
|
|
|
|
'bigint': 'BigInteger',
|
|
|
|
|
|
'real': 'Float',
|
|
|
|
|
|
'double precision': 'Float',
|
|
|
|
|
|
'numeric': 'Numeric',
|
|
|
|
|
|
'character varying': 'String',
|
|
|
|
|
|
'character': 'String',
|
|
|
|
|
|
'text': 'Text',
|
|
|
|
|
|
'bytea': 'LargeBinary',
|
|
|
|
|
|
'date': 'Date',
|
|
|
|
|
|
'time': 'Time',
|
|
|
|
|
|
'time with time zone': 'Time',
|
|
|
|
|
|
'time without time zone': 'Time',
|
|
|
|
|
|
'timestamp': 'DateTime',
|
|
|
|
|
|
'timestamp with time zone': 'DateTime',
|
|
|
|
|
|
'timestamp without time zone': 'DateTime',
|
|
|
|
|
|
'interval': 'Interval',
|
|
|
|
|
|
'json': 'JSON',
|
|
|
|
|
|
'jsonb': 'JSONB',
|
|
|
|
|
|
'uuid': 'Uuid',
|
|
|
|
|
|
'inet': 'INET',
|
|
|
|
|
|
'cidr': 'CIDR',
|
|
|
|
|
|
'macaddr': 'MACADDR',
|
|
|
|
|
|
'point': 'Geometry',
|
|
|
|
|
|
'line': 'Geometry',
|
|
|
|
|
|
'lseg': 'Geometry',
|
|
|
|
|
|
'box': 'Geometry',
|
|
|
|
|
|
'path': 'Geometry',
|
|
|
|
|
|
'polygon': 'Geometry',
|
|
|
|
|
|
'circle': 'Geometry',
|
|
|
|
|
|
'bit': 'Bit',
|
|
|
|
|
|
'bit varying': 'Bit',
|
|
|
|
|
|
'tsvector': 'TSVECTOR',
|
|
|
|
|
|
'tsquery': 'TSQUERY',
|
|
|
|
|
|
'xml': 'String',
|
|
|
|
|
|
'array': 'ARRAY',
|
|
|
|
|
|
'composite': 'JSON',
|
|
|
|
|
|
'enum': 'Enum',
|
|
|
|
|
|
'range': 'Range',
|
|
|
|
|
|
'money': 'Numeric',
|
|
|
|
|
|
'pg_lsn': 'BigInteger',
|
|
|
|
|
|
'txid_snapshot': 'String',
|
|
|
|
|
|
'oid': 'BigInteger',
|
|
|
|
|
|
'regproc': 'String',
|
|
|
|
|
|
'regclass': 'String',
|
|
|
|
|
|
'regtype': 'String',
|
|
|
|
|
|
'regrole': 'String',
|
|
|
|
|
|
'regnamespace': 'String',
|
|
|
|
|
|
'int2vector': 'ARRAY',
|
|
|
|
|
|
'oidvector': 'ARRAY',
|
|
|
|
|
|
'pg_node_tree': 'Text',
|
|
|
|
|
|
}
|
|
|
|
|
|
if DataBaseConfig.db_type == 'postgresql'
|
|
|
|
|
|
else {
|
|
|
|
|
|
# 数值类型
|
|
|
|
|
|
'TINYINT': 'SmallInteger',
|
|
|
|
|
|
'SMALLINT': 'SmallInteger',
|
|
|
|
|
|
'MEDIUMINT': 'Integer',
|
|
|
|
|
|
'INT': 'Integer',
|
|
|
|
|
|
'INTEGER': 'Integer',
|
|
|
|
|
|
'BIGINT': 'BigInteger',
|
|
|
|
|
|
'FLOAT': 'Float',
|
|
|
|
|
|
'DOUBLE': 'Float',
|
|
|
|
|
|
'DECIMAL': 'DECIMAL',
|
|
|
|
|
|
'BIT': 'Integer',
|
|
|
|
|
|
# 日期和时间类型
|
|
|
|
|
|
'DATE': 'Date',
|
|
|
|
|
|
'TIME': 'Time',
|
|
|
|
|
|
'DATETIME': 'DateTime',
|
|
|
|
|
|
'TIMESTAMP': 'TIMESTAMP',
|
|
|
|
|
|
'YEAR': 'Integer',
|
|
|
|
|
|
# 字符串类型
|
|
|
|
|
|
'CHAR': 'CHAR',
|
|
|
|
|
|
'VARCHAR': 'String',
|
|
|
|
|
|
'TINYTEXT': 'Text',
|
|
|
|
|
|
'TEXT': 'Text',
|
|
|
|
|
|
'MEDIUMTEXT': 'Text',
|
|
|
|
|
|
'LONGTEXT': 'Text',
|
|
|
|
|
|
'BINARY': 'BINARY',
|
|
|
|
|
|
'VARBINARY': 'VARBINARY',
|
|
|
|
|
|
'TINYBLOB': 'LargeBinary',
|
|
|
|
|
|
'BLOB': 'LargeBinary',
|
|
|
|
|
|
'MEDIUMBLOB': 'LargeBinary',
|
|
|
|
|
|
'LONGBLOB': 'LargeBinary',
|
|
|
|
|
|
# 枚举和集合类型
|
|
|
|
|
|
'ENUM': 'Enum',
|
|
|
|
|
|
'SET': 'String',
|
|
|
|
|
|
# JSON 类型
|
|
|
|
|
|
'JSON': 'JSON',
|
|
|
|
|
|
# 空间数据类型(需要扩展支持,如 GeoAlchemy2)
|
|
|
|
|
|
'GEOMETRY': 'Geometry', # 需要安装 geoalchemy2
|
|
|
|
|
|
'POINT': 'Geometry',
|
|
|
|
|
|
'LINESTRING': 'Geometry',
|
|
|
|
|
|
'POLYGON': 'Geometry',
|
|
|
|
|
|
'MULTIPOINT': 'Geometry',
|
|
|
|
|
|
'MULTILINESTRING': 'Geometry',
|
|
|
|
|
|
'MULTIPOLYGON': 'Geometry',
|
|
|
|
|
|
'GEOMETRYCOLLECTION': 'Geometry',
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
DB_TO_PYTHON_TYPE_MAPPING = (
|
|
|
|
|
|
{
|
|
|
|
|
|
'boolean': 'bool',
|
|
|
|
|
|
'smallint': 'int',
|
|
|
|
|
|
'integer': 'int',
|
|
|
|
|
|
'bigint': 'int',
|
|
|
|
|
|
'real': 'float',
|
|
|
|
|
|
'double precision': 'float',
|
|
|
|
|
|
'numeric': 'Decimal',
|
|
|
|
|
|
'character varying': 'str',
|
|
|
|
|
|
'character': 'str',
|
|
|
|
|
|
'text': 'str',
|
|
|
|
|
|
'bytea': 'bytes',
|
|
|
|
|
|
'date': 'date',
|
|
|
|
|
|
'time': 'time',
|
|
|
|
|
|
'time with time zone': 'time',
|
|
|
|
|
|
'time without time zone': 'time',
|
|
|
|
|
|
'timestamp': 'datetime',
|
|
|
|
|
|
'timestamp with time zone': 'datetime',
|
|
|
|
|
|
'timestamp without time zone': 'datetime',
|
|
|
|
|
|
'interval': 'timedelta',
|
|
|
|
|
|
'json': 'dict',
|
|
|
|
|
|
'jsonb': 'dict',
|
|
|
|
|
|
'uuid': 'str',
|
|
|
|
|
|
'inet': 'str',
|
|
|
|
|
|
'cidr': 'str',
|
|
|
|
|
|
'macaddr': 'str',
|
|
|
|
|
|
'point': 'list',
|
|
|
|
|
|
'line': 'list',
|
|
|
|
|
|
'lseg': 'list',
|
|
|
|
|
|
'box': 'list',
|
|
|
|
|
|
'path': 'list',
|
|
|
|
|
|
'polygon': 'list',
|
|
|
|
|
|
'circle': 'list',
|
|
|
|
|
|
'bit': 'int',
|
|
|
|
|
|
'bit varying': 'int',
|
|
|
|
|
|
'tsvector': 'str',
|
|
|
|
|
|
'tsquery': 'str',
|
|
|
|
|
|
'xml': 'str',
|
|
|
|
|
|
'array': 'list',
|
|
|
|
|
|
'composite': 'dict',
|
|
|
|
|
|
'enum': 'str',
|
|
|
|
|
|
'range': 'list',
|
|
|
|
|
|
'money': 'Decimal',
|
|
|
|
|
|
'pg_lsn': 'int',
|
|
|
|
|
|
'txid_snapshot': 'str',
|
|
|
|
|
|
'oid': 'int',
|
|
|
|
|
|
'regproc': 'str',
|
|
|
|
|
|
'regclass': 'str',
|
|
|
|
|
|
'regtype': 'str',
|
|
|
|
|
|
'regrole': 'str',
|
|
|
|
|
|
'regnamespace': 'str',
|
|
|
|
|
|
'int2vector': 'list',
|
|
|
|
|
|
'oidvector': 'list',
|
|
|
|
|
|
'pg_node_tree': 'str',
|
|
|
|
|
|
}
|
|
|
|
|
|
if DataBaseConfig.db_type == 'postgresql'
|
|
|
|
|
|
else {
|
|
|
|
|
|
# 数值类型
|
|
|
|
|
|
'TINYINT': 'int',
|
|
|
|
|
|
'SMALLINT': 'int',
|
|
|
|
|
|
'MEDIUMINT': 'int',
|
|
|
|
|
|
'INT': 'int',
|
|
|
|
|
|
'INTEGER': 'int',
|
|
|
|
|
|
'BIGINT': 'int',
|
|
|
|
|
|
'FLOAT': 'float',
|
|
|
|
|
|
'DOUBLE': 'float',
|
|
|
|
|
|
'DECIMAL': 'Decimal',
|
|
|
|
|
|
'BIT': 'int',
|
|
|
|
|
|
# 日期和时间类型
|
|
|
|
|
|
'DATE': 'date',
|
|
|
|
|
|
'TIME': 'time',
|
|
|
|
|
|
'DATETIME': 'datetime',
|
|
|
|
|
|
'TIMESTAMP': 'datetime',
|
|
|
|
|
|
'YEAR': 'int',
|
|
|
|
|
|
# 字符串类型
|
|
|
|
|
|
'CHAR': 'str',
|
|
|
|
|
|
'VARCHAR': 'str',
|
|
|
|
|
|
'TINYTEXT': 'str',
|
|
|
|
|
|
'TEXT': 'str',
|
|
|
|
|
|
'MEDIUMTEXT': 'str',
|
|
|
|
|
|
'LONGTEXT': 'str',
|
|
|
|
|
|
'BINARY': 'bytes',
|
|
|
|
|
|
'VARBINARY': 'bytes',
|
|
|
|
|
|
'TINYBLOB': 'bytes',
|
|
|
|
|
|
'BLOB': 'bytes',
|
|
|
|
|
|
'MEDIUMBLOB': 'bytes',
|
|
|
|
|
|
'LONGBLOB': 'bytes',
|
|
|
|
|
|
# 枚举和集合类型
|
|
|
|
|
|
'ENUM': 'str',
|
|
|
|
|
|
'SET': 'str',
|
|
|
|
|
|
# JSON 类型
|
|
|
|
|
|
'JSON': 'dict',
|
|
|
|
|
|
# 空间数据类型(通常需要特殊处理)
|
|
|
|
|
|
'GEOMETRY': 'bytes',
|
|
|
|
|
|
'POINT': 'bytes',
|
|
|
|
|
|
'LINESTRING': 'bytes',
|
|
|
|
|
|
'POLYGON': 'bytes',
|
|
|
|
|
|
'MULTIPOINT': 'bytes',
|
|
|
|
|
|
'MULTILINESTRING': 'bytes',
|
|
|
|
|
|
'MULTIPOLYGON': 'bytes',
|
|
|
|
|
|
'GEOMETRYCOLLECTION': 'bytes',
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|