您在连接字符串中为dsn使用什么以使用python连接到oracle

时间:2019-07-17 16:47:39

标签: python database connectivity

我正在尝试使用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

1 个答案:

答案 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_namelocalhost/OracleODBC