def _fixed_lookup_fixture(self): return [ (sqltypes.String(), sqltypes.VARCHAR()), (sqltypes.String(1), sqltypes.VARCHAR(1)), (sqltypes.String(3), sqltypes.VARCHAR(3)), (sqltypes.Text(), sqltypes.TEXT()), (sqltypes.Unicode(), sqltypes.VARCHAR()), (sqltypes.Unicode(1), sqltypes.VARCHAR(1)), (sqltypes.UnicodeText(), sqltypes.TEXT()), (sqltypes.CHAR(3), sqltypes.CHAR(3)), (sqltypes.NUMERIC, sqltypes.NUMERIC()), (sqltypes.NUMERIC(10, 2), sqltypes.NUMERIC(10, 2)), (sqltypes.Numeric, sqltypes.NUMERIC()), (sqltypes.Numeric(10, 2), sqltypes.NUMERIC(10, 2)), (sqltypes.DECIMAL, sqltypes.DECIMAL()), (sqltypes.DECIMAL(10, 2), sqltypes.DECIMAL(10, 2)), (sqltypes.INTEGER, sqltypes.INTEGER()), (sqltypes.BIGINT, sqltypes.BIGINT()), (sqltypes.Float, sqltypes.FLOAT()), (sqltypes.TIMESTAMP, sqltypes.TIMESTAMP()), (sqltypes.DATETIME, sqltypes.DATETIME()), (sqltypes.DateTime, sqltypes.DATETIME()), (sqltypes.DateTime(), sqltypes.DATETIME()), (sqltypes.DATE, sqltypes.DATE()), (sqltypes.Date, sqltypes.DATE()), (sqltypes.TIME, sqltypes.TIME()), (sqltypes.Time, sqltypes.TIME()), (sqltypes.BOOLEAN, sqltypes.BOOLEAN()), (sqltypes.Boolean, sqltypes.BOOLEAN()), ]
def StdNumeric(default=0, primary_key=False, unique=False, nullable=False, index=False): return Column(types.NUMERIC(20, 0), default=default, nullable=nullable, primary_key=primary_key, unique=unique, index=index)
def _fixed_lookup_fixture(self): return [ (sqltypes.String(), sqltypes.VARCHAR()), (sqltypes.String(1), sqltypes.VARCHAR(1)), (sqltypes.String(3), sqltypes.VARCHAR(3)), (sqltypes.Text(), sqltypes.TEXT()), (sqltypes.Unicode(), sqltypes.VARCHAR()), (sqltypes.Unicode(1), sqltypes.VARCHAR(1)), (sqltypes.UnicodeText(), sqltypes.TEXT()), (sqltypes.CHAR(3), sqltypes.CHAR(3)), (sqltypes.NUMERIC, sqltypes.NUMERIC()), (sqltypes.NUMERIC(10, 2), sqltypes.NUMERIC(10, 2)), (sqltypes.Numeric, sqltypes.NUMERIC()), (sqltypes.Numeric(10, 2), sqltypes.NUMERIC(10, 2)), (sqltypes.DECIMAL, sqltypes.DECIMAL()), (sqltypes.DECIMAL(10, 2), sqltypes.DECIMAL(10, 2)), (sqltypes.INTEGER, sqltypes.INTEGER()), (sqltypes.BIGINT, sqltypes.BIGINT()), (sqltypes.Float, sqltypes.FLOAT()), (sqltypes.TIMESTAMP, sqltypes.TIMESTAMP()), (sqltypes.DATETIME, sqltypes.DATETIME()), (sqltypes.DateTime, sqltypes.DATETIME()), (sqltypes.DateTime(), sqltypes.DATETIME()), (sqltypes.DATE, sqltypes.DATE()), (sqltypes.Date, sqltypes.DATE()), (sqltypes.TIME, sqltypes.TIME()), (sqltypes.Time, sqltypes.TIME()), (sqltypes.BOOLEAN, sqltypes.BOOLEAN()), (sqltypes.Boolean, sqltypes.BOOLEAN()), (sqlite.DATE(storage_format="%(year)04d%(month)02d%(day)02d", ), sqltypes.DATE()), (sqlite.TIME( storage_format="%(hour)02d%(minute)02d%(second)02d", ), sqltypes.TIME()), (sqlite.DATETIME(storage_format="%(year)04d%(month)02d%(day)02d" "%(hour)02d%(minute)02d%(second)02d", ), sqltypes.DATETIME()), ]
def _type_affinity_fixture(self): return [ ("LONGTEXT", sqltypes.TEXT()), ("TINYINT", sqltypes.INTEGER()), ("MEDIUMINT", sqltypes.INTEGER()), ("INT2", sqltypes.INTEGER()), ("UNSIGNED BIG INT", sqltypes.INTEGER()), ("INT8", sqltypes.INTEGER()), ("CHARACTER(20)", sqltypes.TEXT()), ("CLOB", sqltypes.TEXT()), ("CLOBBER", sqltypes.TEXT()), ("VARYING CHARACTER(70)", sqltypes.TEXT()), ("NATIVE CHARACTER(70)", sqltypes.TEXT()), ("BLOB", sqltypes.BLOB()), ("BLOBBER", sqltypes.NullType()), ("DOUBLE PRECISION", sqltypes.REAL()), ("FLOATY", sqltypes.REAL()), ("NOTHING WE KNOW", sqltypes.NUMERIC()), ]
def test_default_reflection(self): # (ask_for, roundtripped_as_if_different) specs = [(String(3), '"foo"'), (sqltypes.NUMERIC(10, 2), '100.50'), (Integer, '5'), (Boolean, 'False')] columns = [Column('c%i' % (i + 1), t[0], server_default=text(t[1])) for (i, t) in enumerate(specs)] db = testing.db m = MetaData(db) Table('t_defaults', m, *columns) try: m.create_all() m2 = MetaData(db) rt = Table('t_defaults', m2, autoload=True) expected = [c[1] for c in specs] for i, reflected in enumerate(rt.c): eq_(str(reflected.server_default.arg), expected[i]) finally: m.drop_all()
), ( "FLOAT", types.FLOAT(), ), ( "INTEGER", types.INTEGER(), ), ( "BIGINT", types.BIGINT(), ), ( "NUMERIC", types.NUMERIC(), ), ) def build_typeclass(class_name, sql_data_type, quoted): globals()[class_name] = DataType(class_name.lower(), requires_quotes=quoted, sqlalchemy_type=sql_data_type) for dtype, sqlalchemy_type in quoted_types: build_typeclass(dtype, sqlalchemy_type, True) for dtype, sqlalchemy_type in unquoted_types: build_typeclass(dtype, sqlalchemy_type, False)
result = engine.execute(compiled).fetchall() assert len(result) > 0 q = query(table_using_test_dataset) compiled = q.compile( engine_using_test_dataset, compile_kwargs={"literal_binds": True} ) result = engine_using_test_dataset.execute(compiled).fetchall() assert len(result) > 0 @pytest.mark.parametrize( ["column", "processed"], [ (types.String(), "STRING"), (types.NUMERIC(), "NUMERIC"), (types.ARRAY(types.String), "ARRAY<STRING>"), ], ) def test_compile_types(engine, column, processed): result = engine.dialect.type_compiler.process(column) assert result == processed def test_joins(session, table, table_one_row): result = ( session.query(table.c.string, func.count(table_one_row.c.integer)) .join(table_one_row, table_one_row.c.string == table.c.string) .group_by(table.c.string) .all() )
else: dbapi_conn.connection.rollback() # register a method to get a single value of a JSON object OPERATORS[json_getitem_op] = operator_lookup["json_getitem_op"] # Spanner-to-SQLAlchemy types map _type_map = { "BOOL": types.Boolean, "BYTES": types.LargeBinary, "DATE": types.DATE, "DATETIME": types.DATETIME, "FLOAT64": types.Float, "INT64": types.BIGINT, "NUMERIC": types.NUMERIC(precision=38, scale=9), "STRING": types.String, "TIME": types.TIME, "TIMESTAMP": types.TIMESTAMP, "ARRAY": types.ARRAY, "JSON": types.JSON, } _type_map_inv = { types.Boolean: "BOOL", types.BINARY: "BYTES(MAX)", types.LargeBinary: "BYTES(MAX)", types.DATE: "DATE", types.DATETIME: "DATETIME", types.Float: "FLOAT64", types.BIGINT: "INT64",