-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Description
Mysql types aren't generated correctly.
Should the library be updated to properly parse all SQL types?
All table types
CREATE TABLE all_data_types_example (
id INT NOT NULL AUTO_INCREMENT,
tiny_int_example TINYINT DEFAULT 0,
small_int_example SMALLINT DEFAULT 0,
medium_int_example MEDIUMINT DEFAULT 0,
big_int_example BIGINT DEFAULT 0,
decimal_example DECIMAL(10, 2) DEFAULT 0.00,
float_example FLOAT DEFAULT 0,
double_example DOUBLE DEFAULT 0,
date_example DATE DEFAULT NULL,
datetime_example DATETIME DEFAULT NULL,
timestamp_example TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
time_example TIME DEFAULT NULL,
year_example YEAR DEFAULT NULL,
char_example CHAR(100) DEFAULT NULL,
varchar_example VARCHAR(255) DEFAULT NULL,
tiny_text_example TINYTEXT,
text_example TEXT,
medium_text_example MEDIUMTEXT,
long_text_example LONGTEXT,
binary_example BINARY(16) DEFAULT NULL,
varbinary_example VARBINARY(255) DEFAULT NULL,
tiny_blob_example TINYBLOB,
blob_example BLOB,
medium_blob_example MEDIUMBLOB,
long_blob_example LONGBLOB,
enum_example ENUM('small', 'medium', 'large') DEFAULT 'small',
set_example SET('A', 'B', 'C', 'D') DEFAULT NULL,
json_example JSON DEFAULT NULL,
boolean_example TINYINT(1) DEFAULT 0,
point_example POINT DEFAULT NULL,
line_example LINESTRING DEFAULT NULL,
polygon_example POLYGON DEFAULT NULL,
) ENGINE=InnoDB;
Map table types to Pydantic
Column Name | MySQL Type | Pydantic Type | Notes |
---|---|---|---|
id |
INT |
int |
Standard integer type. |
tiny_int_example |
TINYINT |
int |
Represents small integers. |
small_int_example |
SMALLINT |
int |
Represents medium-sized integers. |
medium_int_example |
MEDIUMINT |
int |
Represents larger integers than SMALLINT . |
big_int_example |
BIGINT |
int |
Represents very large integers. |
decimal_example |
DECIMAL(10, 2) |
Decimal |
Use Python's Decimal for precise decimal representation. |
float_example |
FLOAT |
float |
Single-precision floating-point number. |
double_example |
DOUBLE |
float |
Double-precision floating-point number. |
date_example |
DATE |
date |
Use datetime.date from Python's datetime module. |
datetime_example |
DATETIME |
datetime |
Use datetime.datetime from Python's datetime module. |
timestamp_example |
TIMESTAMP |
datetime |
Use datetime.datetime ; consider timezone awareness based on your application needs. |
time_example |
TIME |
time |
Use datetime.time from Python's datetime module. |
year_example |
YEAR |
int |
Represents a year (e.g., 2024). Alternatively, use date with only the year component. |
char_example |
CHAR(100) |
str |
Fixed-length string. |
varchar_example |
VARCHAR(255) |
str |
Variable-length string. |
tiny_text_example |
TINYTEXT |
str |
Very small text data. |
text_example |
TEXT |
str |
Small to medium text data. |
medium_text_example |
MEDIUMTEXT |
str |
Medium-sized text data. |
long_text_example |
LONGTEXT |
str |
Large text data. |
binary_example |
BINARY(16) |
bytes |
Fixed-length binary data. |
varbinary_example |
VARBINARY(255) |
bytes |
Variable-length binary data. |
tiny_blob_example |
TINYBLOB |
bytes |
Very small binary data. |
blob_example |
BLOB |
bytes |
Small to medium binary data. |
medium_blob_example |
MEDIUMBLOB |
bytes |
Medium-sized binary data. |
long_blob_example |
LONGBLOB |
bytes |
Large binary data. |
enum_example |
ENUM('small', 'medium', 'large') |
Enum or Literal |
Use Python’s Enum class or Literal from typing for constrained string values. |
set_example |
SET('A', 'B', 'C', 'D') |
List[str] or Set[str] |
Represents multiple selections; use a list or set of strings. |
json_example |
JSON |
dict or Any |
Use dict for JSON objects or Any for more flexibility. |
boolean_example |
TINYINT(1) |
bool |
Represents boolean values (0 as False , 1 as True ). |
point_example |
POINT |
tuple or Custom Model |
Spatial data; represent as a tuple of coordinates (e.g., (float, float) ) or a custom model. |
line_example |
LINESTRING |
List[tuple] |
Spatial data; represent as a list of coordinate tuples. |
polygon_example |
POLYGON |
List[List[tuple]] |
Spatial data; represent as a list of lists of coordinate tuples. |
Unsupported types
enum_example ENUM('small', 'medium', 'large') DEFAULT 'small',
set_example SET('A', 'B', 'C', 'D') DEFAULT NULL,
Issues with parsing
date_example DATE DEFAULT NULL,
datetime_example DATETIME DEFAULT NULL,
Fixes
- Remove invalid "= NULL".
- Fix invalid types. Map to pydantic types.
Metadata
Metadata
Assignees
Labels
No labels