Пример #1
0
def convert_query_type(column, value):
    """ Return `value` converted to type expected by `table` for column `key`

    Args:
        column (sqlalchemy.orm.attributes.QueryableAttribute): A SQLAlchemy
            ORM attribute
        value (str): A value to convert

    Returns:
        type: `value`, converted to a different type
    """
    if isinstance(column.type, DATETIME_TYPES):
        return arrow.get(value).datetime
    elif isinstance(column.type, sau.ScalarListType):
        try:
            value = ast.literal_eval(value)
        except SyntaxError as exc:
            logger.error(exc)
            raise SyntaxError('Cannot convert column {} - invalid syntax: {}'
                              .format(column, value))
        else:
            return value
    return sau.cast_if(value, type(column.type))
Пример #2
0
 def test_scalar(self):
     assert cast_if('something', sa.String) == 'something'
Пример #3
0
 def test_synonym(self, article_cls):
     expr = article_cls.name_synonym
     assert cast_if(expr, sa.String) is expr
Пример #4
0
 def test_scalar_selectable(self, article_cls):
     expr = sa.select([article_cls.id]).as_scalar()
     assert cast_if(expr, sa.Integer) is expr
Пример #5
0
 def test_column_property(self, article_cls):
     expr = article_cls.name.property
     assert cast_if(expr, sa.String) is expr
Пример #6
0
 def test_instrumented_attribute(self, article_cls):
     expr = article_cls.name
     assert cast_if(expr, sa.String) is expr
Пример #7
0
 def test_scalar_selectable(self, article_cls):
     expr = get_scalar_subquery(sa.select([article_cls.id]))
     assert cast_if(expr, sa.Integer) is expr
Пример #8
0
 def test_column(self, article_cls):
     expr = article_cls.__table__.c.name
     assert cast_if(expr, sa.String) is expr
Пример #9
0
 def test_scalar_selectable(self, article_cls):
     expr = sa.select([article_cls.id]).as_scalar()
     assert cast_if(expr, sa.Integer) is expr
Пример #10
0
 def test_scalar(self):
     assert cast_if("something", sa.String) == "something"
Пример #11
0
 def test_synonym(self, article_cls):
     expr = article_cls.name_synonym
     assert cast_if(expr, sa.String) is expr
Пример #12
0
 def test_instrumented_attribute(self, article_cls):
     expr = article_cls.name
     assert cast_if(expr, sa.String) is expr
Пример #13
0
 def test_column_property(self, article_cls):
     expr = article_cls.name.property
     assert cast_if(expr, sa.String) is expr
Пример #14
0
 def test_column(self, article_cls):
     expr = article_cls.__table__.c.name
     assert cast_if(expr, sa.String) is expr
Пример #15
0
def TestInput(data):
    if len(data) < 10:
        pass

    fdp = atheris.FuzzedDataProvider(data)

    cast_if(FuzzTable.id, Integer)
    cast_if(FuzzTable.name, Integer)
    cast_if(FuzzTable.id, String)
    cast_if(FuzzTable.name, String)

    cast_if(fdp.ConsumeInt(10), Integer)
    cast_if(fdp.ConsumeString(10), Integer)
    cast_if(fdp.ConsumeInt(10), String)
    cast_if(fdp.ConsumeString(10), String)

    db_str = 'sqlite:///fuzz.db'

    engine = create_engine(db_str)
    Base.metadata.create_all(engine)

    try:
        with Session(engine) as session:
            name_str = fdp.ConsumeString(20)
            session.query(FuzzTable).filter(
                FuzzTable.name.ilike(escape_like(name_str))).all()
    except SQLAlchemyError as e:
        pass