如何通过SQLAlchemy以sysdba身份连接Oracle数据库

2 投票
1 回答
5849 浏览
提问于 2025-04-17 23:43

我正在用 Flask 和 SQLAlchemy,想要以 sysdba 的身份连接到 Oracle 数据库。

 SQLALCHEMY_DATABASE_URI ='oracle+cx_oracle://sys:abc@DBNAME[mode=SYSDBA]'

但是这样做不成功,出现了一个错误。

 from flask import Flask  
 from flask.ext.sqlalchemy import SQLAlchemy

 app = Flask(__name__)
 app.config.from_object('config')
 db = SQLAlchemy(app)   
 from app import views,models

我后面还会用到这个数据库对象,但我现在不知道怎么写

SQLALCHEMY_DATABASE_URI 才能以 sysdba 身份登录。

我也试过

CONN = cx_Oracle.connect('sys/abc', dsn='DBNAME', mode = cx_Oracle.SYSDBA)
SQLALCHEMY_DATABASE_URI = CONN

但同样不行。我收到的错误是 ORA-12154: TNS: 无法解析指定的连接标识符……另外,如果我去掉 mode=SYSDBA 的话,就会出现 ORA-28009 的错误,提示说以 SYS 身份连接应该用 SYSDBA。

1 个回答

4

你的 dsn 参数有问题。你还需要把 userpassword 参数分开。试试这样做(对我来说是有效的):

dsn_tns = cx_Oracle.makedsn('host', port, 'sid')
CONN = cx_Oracle.connect('sys', 'abc', dsn_tns, mode=cx_Oracle.SYSDBA)

想了解更多信息,可以查看 cx_Oracle.connect 的说明。

撰写回答