python: datatype convert

 

# 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 SqlServerConvert(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

  

posted @ 2024-12-09 21:54  ®Geovin Du Dream Park™  阅读(12)  评论(0)    收藏  举报