首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,SqlAlchemy.Or_期望有2个参数,得到3个

Python,SqlAlchemy.Or_期望有2个参数,得到3个
EN

Stack Overflow用户
提问于 2022-08-29 15:04:27
回答 1查看 104关注 0票数 2

我的代码有这个问题。当我在body请求中插入三个或多个参数时,我得到这个错误"POST错误: or_预期的2个参数,get 3“。我只能在身体中传递一个或两个参数,在这种情况下,它工作得很好。但我不明白哪里出错了。有人能帮我吗?

代码语言:javascript
运行
复制
def read_uptime(logid, filteredData, dateStart, dateEnd, timeStart, timeEnd, elementsForPage, currentPage, filterUptime):
log.info(f"{logid} read_uptime: Started")

try:
    # Check Timeframe Correct
    startDateTime, endDateTime = _checkDataInput(timeStart, timeEnd, dateStart, dateEnd)

    # Create Filter
    filters = _createFilter(filteredData, startDateTime, endDateTime, filterUptime)

    # Query
    dataFiltered = uptime_model_db.query.with_entities(
        uptime_model_db.projectId.label('projectId'),
        uptime_model_db.url.label('url'),
        uptime_model_db.timeStamp.label('timeStamp'),
        uptime_model_db.uptime.label('uptime'),
        uptime_model_db.latency.label('latency')
        ).filter(*filters).paginate(per_page=int(elementsForPage + 1), page=int(currentPage), error_out=True)


    # Checking more pages
    nextPage = {
        "currentPage": currentPage,
        "totalElements": len(dataFiltered.items)
    }

    if (len(dataFiltered.items) > elementsForPage):
        nextPage["nextPage"] = True
    else:
        nextPage["nextPage"] = False


    # Format and return JSON
    return _createJson(dataFiltered.items, nextPage)

except Exception as e:
    log.error(f"{logid} read_uptime: function read_uptime returned {e}")
    raise e

我犯了一个错误:"array.Filter.append(and_(uptime_model.db.porjectId == projectId,or_(*arrayUrl)

代码语言:javascript
运行
复制
def filterAppend(arrayFilter, urls, projectId, arrayUrl):
if(len(urls) == 1):
    arrayFilter.append(and_(uptime_model_db.projectId == projectId, uptime_model_db.url == urls[0]))

if(len(urls) > 1):
    for url in urls:
        arrayUrl.append(uptime_model_db.url == url)
    arrayFilter.append(and_(uptime_model_db.projectId == projectId, or_(*arrayUrl)))

在这段代码中,我犯了一个错误:"filters.append(or_(*arrayFilter))“

代码语言:javascript
运行
复制
def _createFilter(filteredData, startDateTime, endDateTime, filterUptime):

filters = []

if filteredData is not None:
    arrayFilter = []

    for data in filteredData:
        projectId = data["projectId"]
        urls = data["uptimeUrls"]
        arrayUrl = []
        
        if (len(filteredData) == 1):
            filterAppend(filters, urls, projectId, arrayUrl)

        else:
            filterAppend(arrayFilter, urls, projectId, arrayUrl)

    if(len(filteredData) > 1 or len(arrayFilter) > 1):
        filters.append(or_(*arrayFilter))



if startDateTime is not None:
    filters.append(str(startDateTime) <= uptime_model_db.timeStamp)

if startDateTime is not None:
    filters.append(str(endDateTime) >= uptime_model_db.timeStamp)

if filterUptime == "True":
    filters.append(uptime_model_db.uptime < 100)

return filters
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-24 17:42:55

从sqlalchemy而不是运算符导入or_

代码语言:javascript
运行
复制
from sqlalchemy import or_
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73530821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档