【发布时间】:2019-07-11 20:56:46
【问题描述】:
我正在尝试查询 oracle db。
import cx_Oracle
dsn_tns = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=some.server.com)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)))'
con = cx_Oracle.connect('USER', 'PWD', dsn_tns)
cur = con.cursor()
cur.execute('select * from admin.summary where NUMBER = "C123456"')
res = cur.fetchall()
print res
cur.close()
con.close()
得到:
$ python cx_oracle.py
Traceback (most recent call last):
File "cx_oracle.py", line 9, in <module>
cur.execute('select * from admin.summary where NUMBER = "C123456"')
cx_Oracle.DatabaseError: ORA-00936: missing expression
我也尝试将查询字符串更改为
'select * from admin.summary where NUMBER = 'C1012445''
得到:
$ python cx_oracle.py
File "cx_oracle.py", line 9
cur.execute('select * from admin.summary where NUMBER = 'C1012445'')
^
SyntaxError: invalid syntax
有什么建议吗? Python 版本是 2.7
【问题讨论】:
-
试试这个
cur.execute("select * from admin.summary where NUMBER = 'C123456'")有用吗? -
@Allan 我试过了——同样的 ORA-00936: 缺少表达式错误
-
让我们做更多的故障排除 ->
select sysdate from dual;有效吗?也尝试不使用;让我知道这是否有效 -
@Allan 是的,它的作品:
$ python cx_oracle.py [(datetime.datetime(2019, 2, 18, 16, 10, 32),)] -
好的,
select * from admin.summary有效吗?另外您的 Oracle DB 版本是什么?
标签: python oracle python-2.7 cx-oracle