Я использую pyodbc
вместе с _ 2_ для создания запроса ODBC.
У меня не получается вставить параметры отметки даты. Здесь вы можете увидеть эскалацию, начиная с буквальной версии (1) и заканчивая версией в строковом формате (2) и версиями с состоянием ошибки. (Примечание DateFrom
& DateTo
):
sql = "sp_report ProfitAndLossStandard show Amount_Title, Text, Label, Amount parameters DateFrom = {d'2018-02-12'}, DateTo = {d'2018-02-18'}, SummarizeColumnsBy='TotalOnly', ReturnRows='All'"
sql = "sp_report ProfitAndLossStandard show Amount_Title, Text, Label, Amount parameters DateFrom = %s, DateTo = %s, SummarizeColumnsBy='TotalOnly', ReturnRows='All'" % (q_startdate, q_enddate)
Последующие попытки с синтаксисом вставки ?
, cursor.execute(sql, (q_startdate), (q_enddate))
и переменными:
q_startdate = ("{d'%s'}" % dates[0])
q_enddate = ("{d'%s'}" % dates[1])
sql = "sp_report ProfitAndLossStandard show Amount_Title, Text, Label, Amount parameters DateFrom = ?, DateTo = ?, SummarizeColumnsBy='TotalOnly', ReturnRows='All'"
>>> ('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)')
q_startdate = (dates[0])
q_enddate = (dates[1])
sql = "sp_report ProfitAndLossStandard show Amount_Title, Text, Label, Amount parameters DateFrom = {d'?'}, DateTo = {d'?'}, SummarizeColumnsBy='TotalOnly', ReturnRows='All'"
>>> ('42000', "[42000] [QODBC] [sql syntax error] Expected lexical element not found: = {d'?'} (11015) (SQLPrepare)")
Читая pyodbc
страницу Wiki о вставке данных, я не Не читал ни о каких лежачих полицейских с прошивкой. Это должно иметь какое-то отношение к тому, как pyodbc обрабатывает (экранирует) метку даты.
Как вы параметризуете отметку даты - особенно с qodbc
разновидность отметки даты.
q_startdate = date(2018, 2, 12)
), а вы просто используете... DateFrom = ?
...? - person Gord Thompson   schedule 24.07.2018