DatabaseError:ORA-00900:无效的SQL语句

时间:2019-05-31 15:51:27

标签: python oracle

请帮助编码新手

我一直遇到错误

  在getSidsWithStatusX中

      sip.execute(query)DatabaseError:ORA-00900:无效的SQL语句

def getSidsWithStatusX(startDate, statusX, endDate=None):
    query = cfg.GET_STARTDATE_QUERY.format(startDate=startDate)
    if (endDate):
        query += cfg.GET_ENDDATE_QUERY.format(endDate=endDate)

    query += cfg.GET_STATUSID_QUERY.format(statusX=statusX)
    logger.debug(query)

    sip = rdb.getCursor('sip')
    sip.execute(query)
    data = sip.fetchall()
    sip.rollback()
    sids = []

我通过:

GET_STARTDATE_QUERY = """
                        select sid
                        from contact_requests
                        where entry_date > '{startDate:'%d-%b-%Y'}'
                    """


GET_ENDDATE_QUERY = """
                    and entry_date < '{endDate:'%d-%b-%Y'}'
                """


GET_STATUSID_QUERY = """
                           and request_status_id = '{statusX:s}'
                       """

1 个答案:

答案 0 :(得分:2)

您不应在格式字符串中使用格式规范的引号。这些引号将被复制到结果中,因此您最终得到两套引号,一组来自{之前和之后}的引号,另一组来自%d-%b-%Y周围的引号。

GET_STARTDATE_QUERY = """
                        select sid
                        from contact_requests
                        where entry_date > '{startDate:%d-%b-%Y}'
                    """