请帮助编码新手
我一直遇到错误
在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}'
"""
答案 0 :(得分:2)
您不应在格式字符串中使用格式规范的引号。这些引号将被复制到结果中,因此您最终得到两套引号,一组来自{
之前和之后}
的引号,另一组来自%d-%b-%Y
周围的引号。
GET_STARTDATE_QUERY = """
select sid
from contact_requests
where entry_date > '{startDate:%d-%b-%Y}'
"""