query.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:LabbookDB 作者: TheChymera 项目源码 文件源码
def get_related_id(session, engine, parameters):
    category = parameters.split(":",1)[0]
    sql_query=session.query(ALLOWED_CLASSES[category])
    for field_value in parameters.split(":",1)[1].split("&&"):
        field, value = field_value.split(".",1)
        if ":" in value:
            values = get_related_id(session, engine, value)
            for value in values:
                value=int(value) # the value is returned as a numpy object
                if field[-4:] == "date": # support for date entry matching (the values have to be passes as string but matched as datetime)
                    value = datetime.datetime(*[int(i) for i in value.split(",")])
                sql_query = sql_query.filter(getattr(ALLOWED_CLASSES[category], field)==value)
        else:
            if field[-4:] == "date": # support for date entry matching (the values have to be passes as string but matched as datetime)
                value = datetime.datetime(*[int(i) for i in value.split(",")])
            sql_query = sql_query.filter(getattr(ALLOWED_CLASSES[category], field)==value)
    mystring = sql_query.statement
    mydf = pd.read_sql_query(mystring,engine)
    mydf = mydf.T.groupby(level=0).first().T #awkward hack to deal with polymorphic tables returning multiple IDs
    related_table_ids = mydf["id"]
    input_values = list(related_table_ids)
    if input_values == []:
        raise BaseException("No entry was found with a value of \""+str(value)+"\" on the \""+field+"\" column of the \""+category+"\" CATEGORY, in the database.")
    session.close()
    engine.dispose()
    return input_values
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号