Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理python 3.5中截至日期的无效令牌错误?_Python_Oracle_Python 3.x_Cx Oracle - Fatal编程技术网

如何处理python 3.5中截至日期的无效令牌错误?

如何处理python 3.5中截至日期的无效令牌错误?,python,oracle,python-3.x,cx-oracle,Python,Oracle,Python 3.x,Cx Oracle,我知道Python3.x不会接受01、02等值,。因此,如何处理这个问题,尤其是在使用to_date()进行SQL查询时 下面是我的问题 cur.execute('select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00', 'DD-MON-YYYY hh24:mi')') 我得到下面的错误 File "<ipython-input-34-c9e7408a33cb>", line 2 cur.execute

我知道Python3.x不会接受01、02等值,。因此,如何处理这个问题,尤其是在使用
to_date()
进行SQL查询时

下面是我的问题

cur.execute('select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00', 'DD-MON-YYYY hh24:mi')')
我得到下面的错误

File "<ipython-input-34-c9e7408a33cb>", line 2
cur.execute('select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00', 'DD-MON-YYYY hh24:mi')')
SyntaxError: invalid token
文件“”,第2行

当前执行('select*from COREDEP where PDATE>=截止日期('2016年2月1日00:00','DD-MON-YYYY hh24:mi')) SyntaxError:无效令牌
数据库-Oracle

使用的库-cx_Oracle

'01-Feb-2016 00:00'是一个字符串,Python不应该关心它包含什么。更重要的是,它是更大字符串的一部分,因此Python甚至不应该看到它

我认为问题在于编写SQL语句的方式:对整个字符串和嵌入的文本使用了相同的引号。请尝试改用双引号:

"select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00', 'DD-MON-YYYY hh24:mi')"
“单引号和双引号有什么区别?”

这些引号由Python处理:

"select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00','DD-MON-YYYY hh24:mi')"
^                                                                                       ^
就皮顿而言,这是一根弦

这些报价由Oracle处理:

"select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00','DD-MON-YYYY hh24:mi')"
                                               ^                ^  ^                  ^                                                                              
它们允许Oracle数据库区分语句中的文字

“理想情况下,两者应该相同以表示字符串,对吗?”

在一定程度上。从Python编译器的角度来看您的原始版本:

'select * from COREDEP where PDATE >= To_Date('01-Feb-2016 00:00','DD-MON-YYYY hh24:mi')'
^                                             ^
start of string                                end of string

引号是成对的。因此,匹配引号之后的任何内容都被Python处理为非字符串。这就是为什么Python可以在字符串中看到
01

这是一个使用cx_oracle库连接的oracle数据库“从COREDEP中选择*其中PDATE>=到日期('01-Feb-2016 00:00','DD-MON-yyyyyyyh24:mi')”尝试替换“-->”“从COREDEP中选择*其中PDATE>=到日期('01-Feb-2016 00:00','DD MON yyyyyyyyyh24:mi')”尝试替换“->”@朗丁:谢谢,成功了!这成功了!!如果你能解释一下单引号和双引号有什么不同,这将是很有帮助的?理想情况下,两者应该相同以表示字符串,对吗?