Refactored code.
This commit is contained in:
36
datalite/commons.py
Normal file
36
datalite/commons.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from typing import Any, Optional, Dict
|
||||
|
||||
|
||||
def _convert_type(type_: Optional[type], type_overload: Dict[Optional[type], str]) -> str:
|
||||
"""
|
||||
Given a Python type, return the str name of its
|
||||
SQLlite equivalent.
|
||||
:param type_: A Python type, or None.
|
||||
:param type_overload: A type table to overload the custom type table.
|
||||
:return: The str name of the sql type.
|
||||
>>> _convert_type(int)
|
||||
"INTEGER"
|
||||
"""
|
||||
try:
|
||||
return type_overload[type_]
|
||||
except KeyError:
|
||||
raise TypeError("Requested type not in the default or overloaded type table.")
|
||||
|
||||
|
||||
def _convert_sql_format(value: Any) -> str:
|
||||
"""
|
||||
Given a Python value, convert to string representation
|
||||
of the equivalent SQL datatype.
|
||||
:param value: A value, ie: a literal, a variable etc.
|
||||
:return: The string representation of the SQL equivalent.
|
||||
>>> _convert_sql_format(1)
|
||||
"1"
|
||||
>>> _convert_sql_format("John Smith")
|
||||
'"John Smith"'
|
||||
"""
|
||||
if isinstance(value, str):
|
||||
return f'"{value}"'
|
||||
elif isinstance(value, bytes):
|
||||
return '"' + str(value).replace("b'", "")[:-1] + '"'
|
||||
else:
|
||||
return str(value)
|
||||
Reference in New Issue
Block a user