问题描述
sql = "WITH comparing_price AS (SELECT CODE,DATE,OPEN,high,low,close,volume,"\
"LEAD(OPEN,1) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd1_open',2) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd2_open',3) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd3_open',"\
"LEAD(high,1) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd1_high',2) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd2_high',3) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd3_high',4) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd4_high',"\
"LEAD(low,1) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd1_low',2) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd2_low',3) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd3_low',"\
"LEAD(close,1) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd1_close',2) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd2_close',3) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd3_close',"\
"LEAD(volume,1) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd1_volume',2) OVER (PARTITION BY CODE ORDER BY DATE) AS 'd2_volume',"\
"AVG(close) OVER (PARTITION BY CODE ORDER BY DATE,DATE ROWS BETWEEN 2 preceding AND 2 following) AS 'd2_MA5',DATE ROWS BETWEEN 7 preceding AND 2 following) AS 'd2_MA10',DATE ROWS BETWEEN 17 preceding AND 2 following) AS 'd2_MA20',DATE ROWS BETWEEN 57 preceding AND 2 following) AS 'd2_MA60',DATE ROWS BETWEEN 117 preceding AND 2 following) AS 'd2_MA120',"\
"STD(close) OVER (PARTITION BY CODE ORDER BY DATE,DATE ROWS BETWEEN 17 preceding AND 2 following) AS 'd2_std'"\
"FROM daily_price)"\
"SELECT * "\
"FROM comparing_price"\
"WHERE "\
"volume > 1 AND d1_volume > 1 AND d2_volume > 1"
execute(sql)
然后我收到一条错误消息:
pyMysqL.err.ProgrammingError:
(1064,"You have an error in your sql Syntax;
check the manual that corresponds to your MariaDB server version for the right Syntax to use near
'> 1 AND d1_volume > 1 AND d2_volume > 1' at line 1")
我认为问题与通过 execute() 发送比较运算符有关,因为在 Heidisql 中直接运行此查询时它工作正常。或者有什么其他想法为什么它可能不起作用?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)