Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions mssql_python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,28 @@ def _custom_setattr(name, value):

# Replace the module's __setattr__ with our custom version
sys.modules[__name__].__setattr__ = _custom_setattr


# Export SQL constants at module level
SQL_CHAR = ConstantsDDBC.SQL_CHAR.value
SQL_VARCHAR = ConstantsDDBC.SQL_VARCHAR.value
SQL_LONGVARCHAR = ConstantsDDBC.SQL_LONGVARCHAR.value
SQL_WCHAR = ConstantsDDBC.SQL_WCHAR.value
SQL_WVARCHAR = ConstantsDDBC.SQL_WVARCHAR.value
SQL_WLONGVARCHAR = ConstantsDDBC.SQL_WLONGVARCHAR.value
SQL_DECIMAL = ConstantsDDBC.SQL_DECIMAL.value
SQL_NUMERIC = ConstantsDDBC.SQL_NUMERIC.value
SQL_BIT = ConstantsDDBC.SQL_BIT.value
SQL_TINYINT = ConstantsDDBC.SQL_TINYINT.value
SQL_SMALLINT = ConstantsDDBC.SQL_SMALLINT.value
SQL_INTEGER = ConstantsDDBC.SQL_INTEGER.value
SQL_BIGINT = ConstantsDDBC.SQL_BIGINT.value
SQL_REAL = ConstantsDDBC.SQL_REAL.value
SQL_FLOAT = ConstantsDDBC.SQL_FLOAT.value
SQL_DOUBLE = ConstantsDDBC.SQL_DOUBLE.value
SQL_BINARY = ConstantsDDBC.SQL_BINARY.value
SQL_VARBINARY = ConstantsDDBC.SQL_VARBINARY.value
SQL_LONGVARBINARY = ConstantsDDBC.SQL_LONGVARBINARY.value
SQL_DATE = ConstantsDDBC.SQL_DATE.value
SQL_TIME = ConstantsDDBC.SQL_TIME.value
SQL_TIMESTAMP = ConstantsDDBC.SQL_TIMESTAMP.value
56 changes: 55 additions & 1 deletion mssql_python/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,63 @@ class ConstantsDDBC(Enum):
SQL_FETCH_ABSOLUTE = 5
SQL_FETCH_RELATIVE = 6
SQL_FETCH_BOOKMARK = 8
SQL_SCOPE_CURROW = 0
SQL_BEST_ROWID = 1
SQL_ROWVER = 2
SQL_NO_NULLS = 0
SQL_NULLABLE_UNKNOWN = 2
SQL_INDEX_UNIQUE = 0
SQL_INDEX_ALL = 1
SQL_QUICK = 0
SQL_ENSURE = 1

class AuthType(Enum):
"""Constants for authentication types"""
INTERACTIVE = "activedirectoryinteractive"
DEVICE_CODE = "activedirectorydevicecode"
DEFAULT = "activedirectorydefault"
DEFAULT = "activedirectorydefault"

class SQLTypes:
"""Constants for valid SQL data types to use with setinputsizes"""

@classmethod
def get_valid_types(cls) -> set:
"""Returns a set of all valid SQL type constants"""

return {
ConstantsDDBC.SQL_CHAR.value, ConstantsDDBC.SQL_VARCHAR.value,
ConstantsDDBC.SQL_LONGVARCHAR.value, ConstantsDDBC.SQL_WCHAR.value,
ConstantsDDBC.SQL_WVARCHAR.value, ConstantsDDBC.SQL_WLONGVARCHAR.value,
ConstantsDDBC.SQL_DECIMAL.value, ConstantsDDBC.SQL_NUMERIC.value,
ConstantsDDBC.SQL_BIT.value, ConstantsDDBC.SQL_TINYINT.value,
ConstantsDDBC.SQL_SMALLINT.value, ConstantsDDBC.SQL_INTEGER.value,
ConstantsDDBC.SQL_BIGINT.value, ConstantsDDBC.SQL_REAL.value,
ConstantsDDBC.SQL_FLOAT.value, ConstantsDDBC.SQL_DOUBLE.value,
ConstantsDDBC.SQL_BINARY.value, ConstantsDDBC.SQL_VARBINARY.value,
ConstantsDDBC.SQL_LONGVARBINARY.value, ConstantsDDBC.SQL_DATE.value,
ConstantsDDBC.SQL_TIME.value, ConstantsDDBC.SQL_TIMESTAMP.value,
ConstantsDDBC.SQL_GUID.value
}

# Could also add category methods for convenience
@classmethod
def get_string_types(cls) -> set:
"""Returns a set of string SQL type constants"""

return {
ConstantsDDBC.SQL_CHAR.value, ConstantsDDBC.SQL_VARCHAR.value,
ConstantsDDBC.SQL_LONGVARCHAR.value, ConstantsDDBC.SQL_WCHAR.value,
ConstantsDDBC.SQL_WVARCHAR.value, ConstantsDDBC.SQL_WLONGVARCHAR.value
}

@classmethod
def get_numeric_types(cls) -> set:
"""Returns a set of numeric SQL type constants"""

return {
ConstantsDDBC.SQL_DECIMAL.value, ConstantsDDBC.SQL_NUMERIC.value,
ConstantsDDBC.SQL_BIT.value, ConstantsDDBC.SQL_TINYINT.value,
ConstantsDDBC.SQL_SMALLINT.value, ConstantsDDBC.SQL_INTEGER.value,
ConstantsDDBC.SQL_BIGINT.value, ConstantsDDBC.SQL_REAL.value,
ConstantsDDBC.SQL_FLOAT.value, ConstantsDDBC.SQL_DOUBLE.value
}
Loading