如何通过SQLAlchemy以sysdba身份连接Oracle数据库
我正在用 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
参数有问题。你还需要把 user
和 password
参数分开。试试这样做(对我来说是有效的):
dsn_tns = cx_Oracle.makedsn('host', port, 'sid')
CONN = cx_Oracle.connect('sys', 'abc', dsn_tns, mode=cx_Oracle.SYSDBA)
想了解更多信息,可以查看 cx_Oracle.connect 的说明。