插入日期戳参数时遇到问题。在这里您可以看到从文本版本(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)')
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 page on inserting data时,我没有读到任何带有插入字符串的速度缓冲。这一定与pyodbc如何处理(转义)日期戳有关。在
如何参数化datestamp——尤其是使用qodbc
flavor of datestamp。在
在pyodbc参数化查询中几乎从来没有必要使用像
{d'2018-02-12'}
这样的ODBC转义序列。如果参数值是一个真正的Pythondate对象然后pyodbc将通知ODBC驱动程序参数值为
^{pr2}$SQL_TYPE_DATE
,如ODBC跟踪日志中所示我们可以在SQL命令文本中使用一个空的参数占位符
相关问题 更多 >
编程相关推荐