diff --git a/sqeleton/abcs/database_types.py b/sqeleton/abcs/database_types.py index dba8450..201e773 100644 --- a/sqeleton/abcs/database_types.py +++ b/sqeleton/abcs/database_types.py @@ -42,6 +42,9 @@ class TimestampTZ(TemporalType): class Datetime(TemporalType): pass +class Date(TemporalType): + pass + @dataclass class NumericType(ColType): diff --git a/sqeleton/databases/base.py b/sqeleton/databases/base.py index 294e228..b19c975 100644 --- a/sqeleton/databases/base.py +++ b/sqeleton/databases/base.py @@ -343,7 +343,9 @@ def query(self, sql_ast: Union[Expr, Generator], res_type: type = None): sys.exit(1) res = self._query(sql_code) - if res_type is int: + if res_type is list: + return list(res) + elif res_type is int: if not res: raise ValueError("Query returned 0 rows, expected 1") row = _one(res) diff --git a/sqeleton/databases/mysql.py b/sqeleton/databases/mysql.py index 522d599..527282b 100644 --- a/sqeleton/databases/mysql.py +++ b/sqeleton/databases/mysql.py @@ -9,6 +9,7 @@ FractionalType, ColType_UUID, Boolean, + Date, ) from ..abcs.mixins import ( AbstractMixin_MD5, @@ -62,17 +63,24 @@ class Dialect(BaseDialect, Mixin_Schema): # Dates "datetime": Datetime, "timestamp": Timestamp, + "date": Date, # Numbers "double": Float, "float": Float, "decimal": Decimal, "int": Integer, "bigint": Integer, + "smallint": Integer, + "tinyint": Integer, # Text "varchar": Text, "char": Text, "varbinary": Text, "binary": Text, + "text": Text, + "mediumtext": Text, + "longtext": Text, + "tinytext": Text, # Boolean "boolean": Boolean, } diff --git a/sqeleton/databases/postgresql.py b/sqeleton/databases/postgresql.py index 503de22..7c7b47d 100644 --- a/sqeleton/databases/postgresql.py +++ b/sqeleton/databases/postgresql.py @@ -9,6 +9,7 @@ Text, FractionalType, Boolean, + Date, ) from ..abcs.mixins import AbstractMixin_MD5, AbstractMixin_NormalizeValue from .base import BaseDialect, ThreadedDatabase, import_helper, ConnectError, Mixin_Schema @@ -60,6 +61,7 @@ class PostgresqlDialect(BaseDialect, Mixin_Schema): "timestamp with time zone": TimestampTZ, "timestamp without time zone": Timestamp, "timestamp": Timestamp, + "date": Date, # Numbers "double precision": Float, "real": Float,