Ошибка базы данных: ORA-00900: неверный оператор SQL - PullRequest
1 голос
/ 31 мая 2019

помогите новичку в кодировании

Я получаю сообщение об ошибке

в 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 Ответ

2 голосов
/ 31 мая 2019

Вы не должны иметь кавычки вокруг спецификации формата в строке формата.Эти кавычки копируются в результат, поэтому вы получаете два набора кавычек: один из кавычек до { и после }, а другой из кавычек около %d-%b-%Y.

GET_STARTDATE_QUERY = """
                        select sid
                        from contact_requests
                        where entry_date > '{startDate:%d-%b-%Y}'
                    """
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...