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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值