crate.client.sqlalchemy package

Submodules

crate.client.sqlalchemy.compiler module

class crate.client.sqlalchemy.compiler.CrateCompiler(dialect, statement, column_keys=None, inline=False, **kwargs)

Bases: sqlalchemy.sql.compiler.SQLCompiler

visit_getitem_binary(binary, operator, **kw)
visit_update(update_stmt, **kw)

used to compile <sql.expression.Update> expressions

only implements a subset of the SQLCompiler.visit_update method e.g. updating multiple tables is not supported.

crate.client.sqlalchemy.compiler.crate_before_execute(conn, clauseelement, multiparams, params)
crate.client.sqlalchemy.compiler.rewrite_update(clauseelement, multiparams, params)

change the params to enable partial updates

sqlalchemy by default only supports updates of complex types in the form of

“col = ?”, ({“x”: 1, “y”: 2}

but crate supports

“col[‘x’] = ?, col[‘y’] = ?”, (1, 2)

by using the Craty (MutableDict) type. The update statement is only rewritten if a item of the MutableDict was changed.

crate.client.sqlalchemy.dialect module

class crate.client.sqlalchemy.dialect.CrateDialect(*args, **kwargs)

Bases: sqlalchemy.engine.default.DefaultDialect

colspecs = {<class 'sqlalchemy.types.Date'>: <class 'crate.client.sqlalchemy.dialect.Date'>, <class 'sqlalchemy.types.DateTime'>: <class 'crate.client.sqlalchemy.dialect.DateTime'>}
connect(host=None, port=None, *args, **kwargs)
classmethod dbapi()
do_rollback(connection)
initialize(connection)
name = 'crate'
statement_compiler

alias of CrateCompiler

supports_native_boolean = True
class crate.client.sqlalchemy.dialect.Date(*args, **kwargs)

Bases: sqlalchemy.types.Date

bind_processor(dialect)
result_processor(dialect, coltype)
class crate.client.sqlalchemy.dialect.DateTime(timezone=False)

Bases: sqlalchemy.types.DateTime

bind_processor(dialect)
result_processor(dialect, coltype)

crate.client.sqlalchemy.test module

crate.client.sqlalchemy.types module

class crate.client.sqlalchemy.types.MutableDict(initval=None)

Bases: sqlalchemy.ext.mutable.Mutable, dict

classmethod coerce(key, value)

Convert plain dictionaries to MutableDict.

class crate.client.sqlalchemy.types.MutableList(initval=None)

Bases: sqlalchemy.ext.mutable.Mutable, list

append(item)
classmethod coerce(key, value)

Convert plain list to MutableList

extend(iterable)
insert(idx, item)
pop(index=-1)
remove(item)

Module contents