class documentation

class String(Concatenable, TypeEngine):

Known subclasses: sqlalchemy.types.CHAR, sqlalchemy.types.Enum, sqlalchemy.types.Text, sqlalchemy.types.Unicode, sqlalchemy.types.VARCHAR, sqlalchemy.databases.firebird._StringType, sqlalchemy.dialects.mysql.types._StringType, sqlalchemy.dialects.oracle.cx_oracle._OracleString

View In Hierarchy

The base for all string and character types.

In SQL, corresponds to VARCHAR. Can also take Python unicode objects and encode to the database's encoding in bind params (and the reverse for result sets.)

The length field is usually required when the String type is used within a CREATE TABLE statement, as VARCHAR requires a length on most databases.

Method __init__ Create a string-holding type.
Method bind​_processor Return a conversion function for processing bind values.
Method get​_dbapi​_type Return the corresponding type object from the underlying DB-API, if any.
Method literal​_processor Return a conversion function for processing literal values that are to be rendered directly without using binds.
Method result​_processor Return a conversion function for processing result row values.
Constant RETURNS​_BYTES Undocumented
Constant RETURNS​_CONDITIONAL Undocumented
Constant RETURNS​_UNICODE Undocumented
Constant RETURNS​_UNKNOWN Undocumented
Class Method ​_warn​_deprecated​_unicode Undocumented
Class Variable __visit​_name__ Undocumented
Instance Variable ​_expect​_unicode Undocumented
Instance Variable ​_expect​_unicode​_error Undocumented
Instance Variable ​_warn​_on​_bytestring Undocumented
Instance Variable collation Undocumented
Instance Variable length Undocumented
Property python​_type Return the Python type object expected to be returned by instances of this type, if known.

Inherited from Concatenable:

Class ​Comparator Undocumented

Inherited from TypeEngine:

Class ​Comparator Base class for custom comparison operations defined at the type level. See .TypeEngine.comparator_factory.
Method adapt Produce an "adapted" form of this type, given an "impl" class to work with.
Method as​_generic Return an instance of the generic type corresponding to this type using heuristic rule. The method may be overridden if this heuristic rule is not sufficient.
Method bind​_expression Given a bind value (i.e. a .BindParameter instance), return a SQL expression in its place.
Method coerce​_compared​_value Suggest a type for a 'coerced' Python value in an expression.
Method column​_expression Given a SELECT column expression, return a wrapping SQL expression.
Method compare​_against​_backend Compare this type against the given backend type.
Method compare​_values Compare two values for equality.
Method compile Produce a string-compiled form of this .TypeEngine.
Method dialect​_impl Return a dialect-specific implementation for this .TypeEngine.
Method evaluates​_none Return a copy of this type which has the .should_evaluate_none flag set to True.
Method with​_variant Produce a new type object that will utilize the given type when applied to the dialect of the given name.
Class Variable hashable Flag, if False, means values from this type aren't hashable.
Class Variable should​_evaluate​_none If True, the Python constant None is considered to be handled explicitly by this type.
Class Variable sort​_key​_function A sorting function that can be passed as the key to sorted.
Static Method ​_to​_instance Undocumented
Method __repr__ Undocumented
Method __str__ Undocumented
Method ​_cached​_bind​_processor Return a dialect-specific bind processor for this type.
Method ​_cached​_custom​_processor Undocumented
Method ​_cached​_literal​_processor Return a dialect-specific literal processor for this type.
Method ​_cached​_result​_processor Return a dialect-specific result processor for this type.
Method ​_compare​_type​_affinity Undocumented
Method ​_default​_dialect Undocumented
Method ​_dialect​_info Return a dialect-specific registry which caches a dialect-specific implementation, bind processing function, and one or more result processing functions.
Method ​_gen​_dialect​_impl Undocumented
Method ​_resolve​_for​_literal adjust this type given a literal Python value that will be stored in a bound parameter.
Method ​_unwrapped​_dialect​_impl Return the 'unwrapped' dialect impl for this type.
Method copy Undocumented
Method copy​_value Undocumented
Class Variable ​_is​_array Undocumented
Class Variable ​_is​_table​_value Undocumented
Class Variable ​_is​_tuple​_type Undocumented
Class Variable ​_is​_type​_decorator Undocumented
Class Variable ​_isnull Undocumented
Class Variable ​_sqla​_type Undocumented
Property ​_generic​_type​_affinity Undocumented
Property ​_has​_bind​_expression memoized boolean, check if bind_expression is implemented.
Property ​_has​_column​_expression memoized boolean, check if column_expression is implemented.
Property ​_static​_cache​_key Undocumented
Property ​_type​_affinity Return a rudimental 'affinity' value expressing the general class of type.

Inherited from Traversible (via TypeEngine):

Method get​_children Return immediate child .visitors.Traversible elements of this .visitors.Traversible.
Method __class​_getitem__ Undocumented
@util.deprecated_params(convert_unicode=('1.3', 'The :paramref:`.String.convert_unicode` parameter is deprecated and will be removed in a future release. All modern DBAPIs now support Python Unicode directly and this parameter is unnecessary.'), unicode_error=('1.3', 'The :paramref:`.String.unicode_errors` parameter is deprecated and will be removed in a future release. This parameter is unnecessary for modern Python DBAPIs and degrades performance significantly.'))
def __init__(self, length=None, collation=None, convert_unicode=False, unicode_error=None, _warn_on_bytestring=False, _expect_unicode=False):
Create a string-holding type.
Parameters
lengthoptional, a length for the column for use in DDL and CAST expressions. May be safely omitted if no CREATE TABLE will be issued. Certain databases may require a length for use in DDL, and will raise an exception when the CREATE TABLE DDL is issued if a VARCHAR with no length is included. Whether the value is interpreted as bytes or characters is database specific.
collation

Optional, a column-level collation for use in DDL and CAST expressions. Renders using the COLLATE keyword supported by SQLite, MySQL, and PostgreSQL. E.g.:

>>> from sqlalchemy import cast, select, String
>>> print(select(cast('some string', String(collation='utf8'))))
SELECT CAST(:param_1 AS VARCHAR COLLATE utf8) AS anon_1
convert​_unicode

When set to True, the .String type will assume that input is to be passed as Python Unicode objects under Python 2, and results returned as Python Unicode objects. In the rare circumstance that the DBAPI does not support Python unicode under Python 2, SQLAlchemy will use its own encoder/decoder functionality on strings, referring to the value of the :paramref:`_sa.create_engine.encoding` parameter parameter passed to _sa.create_engine as the encoding.

For the extremely rare case that Python Unicode is to be encoded/decoded by SQLAlchemy on a backend that does natively support Python Unicode, the string value "force" can be passed here which will cause SQLAlchemy's encode/decode services to be used unconditionally.

Note

SQLAlchemy's unicode-conversion flags and features only apply to Python 2; in Python 3, all string objects are Unicode objects. For this reason, as well as the fact that virtually all modern DBAPIs now support Unicode natively even under Python 2, the :paramref:`.String.convert_unicode` flag is inherently a legacy feature.

Note

In the vast majority of cases, the .Unicode or .UnicodeText datatypes should be used for a _schema.Column that expects to store non-ascii data. These datatypes will ensure that the correct types are used on the database side as well as set up the correct Unicode behaviors under Python 2.

See Also

:paramref:`_sa.create_engine.convert_unicode` - _engine.Engine-wide parameter

unicode​_errorOptional, a method to use to handle Unicode conversion errors. Behaves like the errors keyword argument to the standard library's string.decode() functions, requires that :paramref:`.String.convert_unicode` is set to "force"
​_warn​_on​_bytestringUndocumented
​_expect​_unicodeUndocumented
def bind_processor(self, dialect):

Return a conversion function for processing bind values.

Returns a callable which will receive a bind parameter value as the sole positional argument and will return a value to send to the DB-API.

If processing is not necessary, the method should return None.

Note

This method is only called relative to a dialect specific type object, which is often private to a dialect in use and is not the same type object as the public facing one, which means it's not feasible to subclass a .types.TypeEngine class in order to provide an alternate _types.TypeEngine.bind_processor method, unless subclassing the _types.UserDefinedType class explicitly.

To provide alternate behavior for _types.TypeEngine.bind_processor, implement a _types.TypeDecorator class and provide an implementation of _types.TypeDecorator.process_bind_param.

Parameters
dialectDialect instance in use.
def literal_processor(self, dialect):
overridden in sqlalchemy.types.Enum

Return a conversion function for processing literal values that are to be rendered directly without using binds.

This function is used when the compiler makes use of the "literal_binds" flag, typically used in DDL generation as well as in certain scenarios where backends don't accept bound parameters.

Returns a callable which will receive a literal Python value as the sole positional argument and will return a string representation to be rendered in a SQL statement.

Note

This method is only called relative to a dialect specific type object, which is often private to a dialect in use and is not the same type object as the public facing one, which means it's not feasible to subclass a .types.TypeEngine class in order to provide an alternate _types.TypeEngine.literal_processor method, unless subclassing the _types.UserDefinedType class explicitly.

To provide alternate behavior for _types.TypeEngine.literal_processor, implement a _types.TypeDecorator class and provide an implementation of _types.TypeDecorator.process_literal_param.

def result_processor(self, dialect, coltype):

Return a conversion function for processing result row values.

Returns a callable which will receive a result row column value as the sole positional argument and will return a value to return to the user.

If processing is not necessary, the method should return None.

Note

This method is only called relative to a dialect specific type object, which is often private to a dialect in use and is not the same type object as the public facing one, which means it's not feasible to subclass a .types.TypeEngine class in order to provide an alternate _types.TypeEngine.result_processor method, unless subclassing the _types.UserDefinedType class explicitly.

To provide alternate behavior for _types.TypeEngine.result_processor, implement a _types.TypeDecorator class and provide an implementation of _types.TypeDecorator.process_result_value.

Parameters
dialectDialect instance in use.
coltypeDBAPI coltype argument received in cursor.description.
RETURNS_BYTES =

Undocumented

Value
util.symbol('RETURNS_BYTES',
            '''Indicates that the DBAPI returns byte objects under Python 3
        or non-Unicode string objects under Python 2 for VARCHAR, NVARCHAR,
        and other character-based datatypes in all cases.

        This may be applied to the
        :attr:`.DefaultDialect.returns_unicode_strings` attribute.
...
RETURNS_CONDITIONAL =

Undocumented

Value
util.symbol('RETURNS_CONDITIONAL',
            '''Indicates that the DBAPI may return Unicode or bytestrings for
        VARCHAR, NVARCHAR, and other character-based datatypes, and that
        SQLAlchemy\'s default String datatype will need to test on a per-row
        basis for Unicode or bytes.

        This may be applied to the
...
RETURNS_UNICODE =

Undocumented

Value
util.symbol('RETURNS_UNICODE',
            '''Indicates that the DBAPI returns Python Unicode for VARCHAR,
        NVARCHAR, and other character-based datatypes in all cases.

        This is the default value for
        :attr:`.DefaultDialect.returns_unicode_strings` under Python 3.

...
RETURNS_UNKNOWN =

Undocumented

Value
util.symbol('RETURNS_UNKNOWN',
            '''Indicates that the dialect should test on first connect what the
        string-returning behavior of character-based datatypes is.

        This is the default value for DefaultDialect.unicode_returns under
        Python 2.

...
@classmethod
def _warn_deprecated_unicode(cls):

Undocumented

_expect_unicode =
_expect_unicode_error =

Undocumented

_warn_on_bytestring =

Undocumented

collation =

Undocumented

length =

Undocumented

@property
python_type =
overridden in sqlalchemy.types.Enum

Return the Python type object expected to be returned by instances of this type, if known.

Basically, for those types which enforce a return type, or are known across the board to do such for all common DBAPIs (like int for example), will return that type.

If a return type is not defined, raises NotImplementedError.

Note that any type also accommodates NULL in SQL which means you can also get back None from any type in practice.