예제 #1
0
파일: test_sql.py 프로젝트: djhoese/dask
def test_query(db):
    import sqlalchemy as sa
    from sqlalchemy import sql

    s1 = sql.select([sql.column("number"),
                     sql.column("name")]).select_from(sql.table("test"))
    out = read_sql_query(s1, db, npartitions=2, index_col="number")
    assert_eq(out, df[["name"]])

    s2 = (sql.select([
        sa.cast(sql.column("number"), sa.types.BigInteger).label("number"),
        sql.column("name"),
    ]).where(sql.column("number") >= 5).select_from(sql.table("test")))

    out = read_sql_query(s2, db, npartitions=2, index_col="number")
    assert_eq(out, df.loc[5:, ["name"]])
예제 #2
0
def test_query_index_from_query(db):
    from sqlalchemy import sql

    number = sql.column("number")
    name = sql.column("name")
    s1 = sql.select([number, name, sql.func.length(name).label("lenname")]).select_from(
        sql.table("test")
    )
    out = read_sql_query(s1, db, npartitions=2, index_col="lenname")

    lenname_df = df.copy()
    lenname_df["lenname"] = lenname_df["name"].str.len()
    lenname_df = lenname_df.reset_index().set_index("lenname")
    assert_eq(out, lenname_df.loc[:, ["number", "name"]])
예제 #3
0
def test_query_with_meta(db):
    from sqlalchemy import sql

    data = {
        "name": pd.Series([], name="name", dtype="str"),
        "age": pd.Series([], name="age", dtype="int"),
    }
    index = pd.Index([], name="number", dtype="int")
    meta = pd.DataFrame(data, index=index)

    s1 = sql.select(
        [sql.column("number"), sql.column("name"), sql.column("age")]
    ).select_from(sql.table("test"))
    out = read_sql_query(s1, db, npartitions=2, index_col="number", meta=meta)
    # Don't check dtype for windows https://github.com/dask/dask/issues/8620
    assert_eq(out, df[["name", "age"]], check_dtype=sys.platform != "win32")