type_conversion.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from common.enums import GenModelColumnType
  4. def sql_type_to_sqlalchemy(typing: str) -> str:
  5. """
  6. Converts a sql type to a SQLAlchemy type.
  7. :param typing:
  8. :return:
  9. """
  10. type_mapping = {
  11. GenModelColumnType.BIGINT: 'BIGINT',
  12. GenModelColumnType.BINARY: 'BINARY',
  13. GenModelColumnType.BIT: 'BIT',
  14. GenModelColumnType.BLOB: 'BLOG',
  15. GenModelColumnType.BOOL: 'BOOLEAN',
  16. GenModelColumnType.BOOLEAN: 'BOOLEAN',
  17. GenModelColumnType.CHAR: 'CHAR',
  18. GenModelColumnType.DATE: 'DATE',
  19. GenModelColumnType.DATETIME: 'DATETIME',
  20. GenModelColumnType.DECIMAL: 'DECIMAL',
  21. GenModelColumnType.DOUBLE: 'DOUBLE',
  22. GenModelColumnType.ENUM: 'ENUM',
  23. GenModelColumnType.FLOAT: 'FLOAT',
  24. GenModelColumnType.INT: 'INT',
  25. GenModelColumnType.INTEGER: 'INTEGER',
  26. GenModelColumnType.JSON: 'JSON',
  27. GenModelColumnType.LONGBLOB: 'LONGBLOB',
  28. GenModelColumnType.LONGTEXT: 'LONGTEXT',
  29. GenModelColumnType.MEDIUMBLOB: 'MEDIUMBLOB',
  30. GenModelColumnType.MEDIUMINT: 'MEDIUMINT',
  31. GenModelColumnType.MEDIUMTEXT: 'MEDIUMTEXT',
  32. GenModelColumnType.NUMERIC: 'NUMERIC',
  33. GenModelColumnType.SET: 'SET',
  34. GenModelColumnType.SMALLINT: 'SMALLINT',
  35. GenModelColumnType.REAL: 'REAL',
  36. GenModelColumnType.TEXT: 'TEXT',
  37. GenModelColumnType.TIME: 'TIME',
  38. GenModelColumnType.TIMESTAMP: 'TIMESTAMP',
  39. GenModelColumnType.TINYBLOB: 'TINYBLOB',
  40. GenModelColumnType.TINYINT: 'TINYINT',
  41. GenModelColumnType.TINYTEXT: 'TINYTEXT',
  42. GenModelColumnType.VARBINARY: 'VARBINARY',
  43. GenModelColumnType.VARCHAR: 'VARCHAR',
  44. GenModelColumnType.YEAR: 'YEAR',
  45. }
  46. return type_mapping.get(typing, 'VARCHAR')
  47. def sql_type_to_pydantic(typing: str) -> str:
  48. """
  49. Converts a sql type to a pydantic type.
  50. :param typing:
  51. :return:
  52. """
  53. type_mapping = {
  54. GenModelColumnType.BIGINT: 'int',
  55. GenModelColumnType.BINARY: 'bytes',
  56. GenModelColumnType.BIT: 'bool',
  57. GenModelColumnType.BLOB: 'bytes',
  58. GenModelColumnType.BOOL: 'bool',
  59. GenModelColumnType.BOOLEAN: 'bool',
  60. GenModelColumnType.CHAR: 'str',
  61. GenModelColumnType.DATE: 'date',
  62. GenModelColumnType.DATETIME: 'datetime',
  63. GenModelColumnType.DECIMAL: 'Decimal',
  64. GenModelColumnType.DOUBLE: 'float',
  65. GenModelColumnType.ENUM: 'Enum',
  66. GenModelColumnType.FLOAT: 'float',
  67. GenModelColumnType.INT: 'int',
  68. GenModelColumnType.INTEGER: 'int',
  69. GenModelColumnType.JSON: 'dict',
  70. GenModelColumnType.LONGBLOB: 'bytes',
  71. GenModelColumnType.LONGTEXT: 'str',
  72. GenModelColumnType.MEDIUMBLOB: 'bytes',
  73. GenModelColumnType.MEDIUMINT: 'int',
  74. GenModelColumnType.MEDIUMTEXT: 'str',
  75. GenModelColumnType.NUMERIC: 'NUMERIC',
  76. GenModelColumnType.SET: 'List[str]',
  77. GenModelColumnType.SMALLINT: 'int',
  78. GenModelColumnType.REAL: 'float',
  79. GenModelColumnType.TEXT: 'str',
  80. GenModelColumnType.TIME: 'time',
  81. GenModelColumnType.TIMESTAMP: 'datetime',
  82. GenModelColumnType.TINYBLOB: 'bytes',
  83. GenModelColumnType.TINYINT: 'int',
  84. GenModelColumnType.TINYTEXT: 'str',
  85. GenModelColumnType.VARBINARY: 'bytes',
  86. GenModelColumnType.VARCHAR: 'str',
  87. GenModelColumnType.YEAR: 'int',
  88. }
  89. return type_mapping.get(typing, 'str')