我的代码有这个问题。当我在body请求中插入三个或多个参数时,我得到这个错误"POST错误: or_预期的2个参数,get 3“。我只能在身体中传递一个或两个参数,在这种情况下,它工作得很好。但我不明白哪里出错了。有人能帮我吗?
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)
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))“
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发布于 2022-10-24 17:42:55
从sqlalchemy而不是运算符导入or_:
from sqlalchemy import or_https://stackoverflow.com/questions/73530821
复制相似问题