# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述: 数据类型换
# https://learn.microsoft.com/en-us/sql/machine-learning/python/python-libraries-and-data-types?view=sql-server-ver16
# sql server https://docs.devart.com/python/sqlserver/data-types.htm
# sql server https://zontroy.com/mssql-to-python-type-mapping
# mysql https://zontroy.com/mysql-to-python-type-mapping
# mysql https://docs.devart.com/python/mysql/data-types.htm
# postgresql https://zontroy.com/postgresql-to-python-type-mapping
# postgresql https://docs.devart.com/python/postgresql/data-types.htm
# oracle https://zontroy.com/oracle-to-python-type-mapping
# oracle https://docs.devart.com/python/oracle/data-types.htm
# sqlite https://docs.devart.com/python/sqlite/data-types.htm
# datatype convert
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# OS : windows 10
# Datetime : 2024/12/9 21:39
# User : geovindu
# Product : PyCharm
# Project : pyGenerator
# File : datatypeConvert.py
# explain : 学习
class DataTyepconvert(object):
"""
數據類型轉換
"""
def __init__(self):
"""
"""
self._strdatabase = "sql server、mysql、postgresql、oracle、sqlite"
pass
@staticmethod
def SqlServerconvertt(datattype:str)->str:
"""
sql server 數據類型轉換 python datatype
:param dtattype:
:return:
"""
pythodatatype=""
dtattype=datattype.lower()
try:
match dtattype:
case "int":
pythodatatype="int"
pass
case "char":
pythodatatype ="str"
pass
case "nchar":
pythodatatype = "str"
pass
case "nvarchar":
pythodatatype = "str"
pass
case "bigint":
pythodatatype="float64"
pass
case "binary":
pythodatatype ="bytes"
pass
case "bit":
pythodatatype = "bool"
pass
case "date":
pythodatatype = "datetime"
pass
case "datetime":
pythodatatype = "datetime"
case "datetime2":
pythodatatype = "datetime"
case "time":
pythodatatype = "time"
case "real":
pythodatatype="float64"
pass
case "smalldatetime":
pythodatatype ="datetime"
pass
case "smallint":
pythodatatype = "int32"
pass
case "tinyint":
pythodatatype = "int32"
pass
case "uniqueidentifier":
pythodatatype="str"
pass
case "float":
pythodatatype ="float"
pass
case "varbinary":
pythodatatype = "bytes"
pass
case "decimal":
pythodatatype = "float"
pass
case "image":
pythodatatype="bytes"
pass
case "money":
pythodatatype ="float"
pass
case "smallmoney":
pythodatatype ="float"
pass
case "numeric":
pythodatatype ="float"
pass
case "text":
pythodatatype = "str"
pass
case "ntext":
pythodatatype = "str"
pass
case _:
pythodatatype='str'
pass
except ValueError as erro:
pythodatatype = 'str'
return pythodatatype
@staticmethod
def mySQLconvert(datattype:str)->str:
"""
mySQL 數據類型轉換 python datatype
:param dtattype:
:return:
"""
pythodatatype=""
dtattype=datattype.lower()
try:
match dtattype:
case "char":
pythodatatype="str"
pass
case "varchar":
pythodatatype ="str"
pass
case "enum":
pythodatatype = "str"
pass
case "set":
pythodatatype="str"
pass
case "tinytext":
pythodatatype ="str"
pass
case "mediumtext":
pythodatatype = "str"
pass
case "text":
pythodatatype="str"
pass
case "longtext":
pythodatatype ="str"
pass
case "json":
pythodatatype = "str"
pass
case "bit":
pythodatatype="int"
pass
case "tinyint":
pythodatatype ="int"
pass
case "tinyint unsigned":
pythodatatype = "int"
pass
case "smallint":
pythodatatype = "int"
pass
case "smallint unsigned":
pythodatatype = "int"
pass
case "mediumint":
pythodatatype = "int"
pass
case "mediumint unsigned":
pythodatatype = "int"
pass
case "int":
pythodatatype = "int"
pass
case "int unsigned":
pythodatatype = "int"
pass
case "bigint":
pythodatatype = "int"
pass
case "bigint unsigned":
pythodatatype = "int"
pass
case "year":
pythodatatype = "int"
pass
case "decimal":
pythodatatype = "float"
pass
case "float":
pythodatatype = "float"
pass
case "double":
pythodatatype = "float"
pass
case "date":
pythodatatype = "date"
pass
case "time":
pythodatatype = "time"
pass
case "datetime":
pythodatatype = "datetime"
pass
case "timestamp":
pythodatatype = "datetime"
pass
case "binary":
pythodatatype = "binary"
pass
case "varbinary":
pythodatatype = "binary"
pass
case "tinyblob":
pythodatatype = "bytes"
pass
case "blob":
pythodatatype = "bytes"
pass
case "mediumblob":
pythodatatype = "bytes"
pass
case "longblob":
pythodatatype = "bytes"
pass
case _:
pythodatatype='str'
pass
except ValueError as erro:
pythodatatype = 'str'
return pythodatatype
@staticmethod
def postgreSQLconvert(datattype:str)->str:
"""
postgreSQL 數據類型轉換 python datatype
:param dtattype:
:return:
"""
pythodatatype=""
dtattype=datattype.lower()
try:
match dtattype:
case "character":
pythodatatype="str"
pass
case "character varying":
pythodatatype ="str"
pass
case "text":
pythodatatype = "str"
pass
case "smallint":
pythodatatype = "int"
pass
case "integer":
pythodatatype = "int"
pass
case "bigint":
pythodatatype = "int"
pass
case "serial":
pythodatatype = "int"
pass
case "bigserial":
pythodatatype = "int"
pass
case "real":
pythodatatype = "float"
pass
case "double precision":
pythodatatype = "float"
pass
case "numeric":
pythodatatype = "numeric"
pass
case "date":
pythodatatype = "date"
pass
case "time":
pythodatatype = "time"
pass
case "time with time zone":
pythodatatype = "time"
pass
case "timestamp":
pythodatatype = "datetime"
pass
case "timestamp with time zone":
pythodatatype = "datetime"
pass
case "bytea":
pythodatatype = "binary"
pass
case "point":
pythodatatype = "point"
pass
case "lseg":
pythodatatype = "lseg"
pass
case "line":
pythodatatype = "line"
pass
case "path":
pythodatatype = "path"
pass
case "polygon":
pythodatatype = "polygon"
pass
case "box":
pythodatatype = "box"
pass
case "circle":
pythodatatype = "circle"
pass
case _:
pythodatatype='str'
pass
except ValueError as erro:
pythodatatype = 'str'
return pythodatatype
@staticmethod
def SQLiteconvert(datattype:str)->str:
"""
SQLite 數據類型轉換 python datatype
:param dtattype:
:return:
"""
pythodatatype=""
dtattype=datattype.lower()
try:
match dtattype:
case "int8":
pythodatatype="int"
pass
case "tinyint":
pythodatatype ="int"
pass
case "int2":
pythodatatype = "int"
pass
case "smallint":
pythodatatype = "int"
pass
case "int":
pythodatatype = "int"
pass
case "integer":
pythodatatype = "int"
pass
case "mediumint":
pythodatatype = "int"
pass
case "int64":
pythodatatype = "int"
pass
case "bigint":
pythodatatype = "int"
pass
case "unsigned bigint":
pythodatatype = "int"
pass
case "real":
pythodatatype = "float"
pass
case "float":
pythodatatype = "float"
pass
case "double":
pythodatatype = "float"
pass
case "char":
pythodatatype = "str"
pass
case "varchar":
pythodatatype = "str"
pass
case "text":
pythodatatype = "str"
pass
case "date":
pythodatatype = "date"
pass
case "time":
pythodatatype = "time"
pass
case "datetime":
pythodatatype = "datetime"
pass
case "timestamp":
pythodatatype = "datetime"
pass
case "blob":
pythodatatype = "binary"
pass
case "binary":
pythodatatype = "binary"
pass
case "unknown":
pythodatatype = "str"
pass
case _:
pythodatatype='str'
pass
except ValueError as erro:
pythodatatype = 'str'
return pythodatatype
@staticmethod
def oracleconvert(datattype:str)->str:
"""
oracle 數據類型轉換 python datatype
:param dtattype:
:return:
"""
pythodatatype=""
dtattype=datattype.lower()
try:
match dtattype:
case "char":
pythodatatype="str"
pass
case "varchar2":
pythodatatype ="str"
pass
case "nchar":
pythodatatype = "str"
pass
case "nvarchar2":
pythodatatype = "str"
pass
case "clob":
pythodatatype = "str"
pass
case "nclob":
pythodatatype = "str"
pass
case "cfile":
pythodatatype = "str"
pass
case "long":
pythodatatype = "str"
pass
case "rowid":
pythodatatype = "str"
pass
case "urowid":
pythodatatype = "str"
pass
case "float":
pythodatatype = "float"
pass
case "binary_float":
pythodatatype = "float"
pass
case "binary_double":
pythodatatype = "float"
pass
case "number":
pythodatatype = "float"
pass
case "integer":
pythodatatype = "int"
pass
case "decimal":
pythodatatype = "float"
pass
case "date":
pythodatatype = "date"
pass
case "timestamp":
pythodatatype = "datetime"
pass
case "timestamp with time zone":
pythodatatype = "datetime"
pass
case "timestamp with local time zone":
pythodatatype = "datetime"
pass
case "blob":
pythodatatype = "binary"
pass
case "bfile":
pythodatatype = "binary"
pass
case "raw":
pythodatatype = "binary"
pass
case "long raw":
pythodatatype = "binary"
pass
case _:
pythodatatype='str'
pass
except ValueError as erro:
pythodatatype = 'str'
return pythodatatype
python: datatype convert
于 2024-12-09 22:01:43 首次发布