我在flask中使用sqlalchemy创建了一个Web应用程序,用于从Oracle DB中查询数据。( flask 本地Web服务器)一切工作完美,但当我试图在真实的Web服务器运行它,我得到了错误ORA-01843不是一个有效的月份错误。最初我认为这可能与我在IIS中运行代码有关,但后来我尝试使用 flask 在IIS托管的服务器内开发Web服务器,并得到了完全相同的错误。我在互联网上做了一些搜索,发现了一些关于设置NLS_TIMESTAMP_FORMAT的提及(cx_Oracle 'ORA-01843: not a valid month' with unicode parameter)。但我不知道如何做到这一点。Oracle客户端在两种环境中是相同的(我的笔记本电脑和服务器)所以我认为它可能与Oracle客户端配置有关。下面是我试图执行的查询。
query = db.session.query(intervaldate.TSTART,kpi_db.VALUE)
query = query.filter(intervaldate.ID == kpi_db.INTERVAL_ID)
query = query.filter(intervaldate.TSTART>=t_ini)
query = query.filter(intervaldate.TSTART<=t_end)
query = query.filter(kpi_db.KPI_ID==1)
query = query.filter(kpi_db.CTRL_ID==ctrl_id)
query = query.all()
字符串
没什么太复杂的。我只是通知一个时间范围和两个额外的参数。我的开发环境中,它的工作,并在服务器中,它不。我试图运行这个查询也在 flask shell ,并得到完全相同的错误。有没有人在这里见过这种情况发生与sqlalchemy?
2条答案
按热度按时间jfewjypa1#
对于任何遇到这个问题并且在使用pandas时遇到这个问题的人,这是我的解决方案,也使用了to_date函数。
字符串
cqoc49vn2#
尽管不理解这两种环境之间的区别,但我设法找到了解决方案。sqlAlchemy有一个to_date函数,可以正确格式化Oracle的日期。所以我这样做了。
字符串
和它的工作完美