我正在尝试使用cx_Oracle从python连接到oracle。我的登录名和密码未知,我不知道dsn有什么用。
我正在使用tkinter为Oracle db创建CRUD操作。我的函数被编写为从数据库读取数据。我的processingTime = time_starttransfer - time_connect
失败,因为我没有传递正确的参数。
我将cx_Oracle.connect
用于dsn,但是它给出了SyntaxError:位置参数紧跟关键字参数。
能否请您输入正确的参数以进行连接?我正在尝试连接到Oracle 10g Express Edition。
@localhost:1521:xe
答案 0 :(得分:-1)
看起来您已正确调用了makedsn()
function,但从未使用过调用connect()
时返回的值。
根据cx_Oracle documentation for connect()
,dsn=
参数可以如下:
dsn(数据源名称)是TNS条目(来自Oracle名称) 服务器或tnsnames.ora文件),或者是字符串,例如从 makedsn()。
尝试将您对connect()
的呼叫更改为以下内容:
conn = cx_Oracle.connect(user='wm910', password='wm910', dsn=dsn_tns)
编辑:或者,如@ChristopherJones在其评论中建议的那样,将上面的dsn_tns
变量替换为"localhost:1521/xe"
。
或者,您可以使用单个字符串作为connect()
的参数,如下所述:
如果仅传递一个参数,则假定连接字符串为 格式为 user / password @ dsn ,与 Oracle应用程序,例如SQL * Plus。
Elsewhere in the docs,提供的示例DSN字符串如下:
connection = cx_Oracle.connect("hr", "welcome", "localhost/orclpdb")
您可以删除user=
和password=
并仅使用位置参数,就像它们一样,以这种形式为DSN传递有效的字符串:
connection = cx_Oracle.connect("wm910", "wm910", "localhost/OracleODBC")
假设hostname/service_name
是localhost/OracleODBC
。