summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-02-07 17:50:56 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-02-07 17:50:56 +0000
commitcc5fd2fb28dba9961ce7aa8ae5dc151362050d9e (patch)
tree06ee8e5e516eeb12ee72d7e1e99e0840f2641459 /lib
parent0566df2f79c7aae978bc0ef8e253cfcc4de54ecc (diff)
parent24de22338522779c5d9e720c4b97dc8609136c29 (diff)
downloadsqlalchemy-cc5fd2fb28dba9961ce7aa8ae5dc151362050d9e.tar.gz
Merge "apply literal value resolution to String" into main
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/sql/sqltypes.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py
index 42fad5e04..575f402c3 100644
--- a/lib/sqlalchemy/sql/sqltypes.py
+++ b/lib/sqlalchemy/sql/sqltypes.py
@@ -184,6 +184,15 @@ class String(Concatenable, TypeEngine[typing_Text]):
self.length = length
self.collation = collation
+ def _resolve_for_literal(self, value):
+ # I was SO PROUD of my regex trick, but we dont need it.
+ # re.search(r"[^\u0000-\u007F]", value)
+
+ if value.isascii():
+ return _STRING
+ else:
+ return _UNICODE
+
def literal_processor(self, dialect):
def process(value):
value = value.replace("'", "''")
@@ -3019,6 +3028,10 @@ MATCHTYPE = MatchType()
TABLEVALUE = TableValueType()
DATETIME_TIMEZONE = DateTime(timezone=True)
TIME_TIMEZONE = Time(timezone=True)
+_DATETIME = DateTime()
+_TIME = Time()
+_STRING = String()
+_UNICODE = Unicode()
_type_map = {
int: Integer(),
@@ -3026,12 +3039,12 @@ _type_map = {
bool: BOOLEANTYPE,
decimal.Decimal: Numeric(),
dt.date: Date(),
- dt.datetime: DateTime(),
- dt.time: Time(),
+ dt.datetime: _DATETIME,
+ dt.time: _TIME,
dt.timedelta: Interval(),
util.NoneType: NULLTYPE,
bytes: LargeBinary(),
- str: Unicode(),
+ str: _STRING,
}