Я хочу использовать Flask-SQLAlchemy Bind для подключения к вторичной базе данных Oracle.Я получаю сообщение об ошибке, в котором говорится, что таблица, к которой я хочу подключиться, не определена, хотя она определена в моей модели с добавлением соответствующей конфигурации привязки.Вот конкретная ошибка: NameError: имя 'ACCOUNT' не определено.Эта ошибка возникает перед любой попыткой фактически запросить базу данных.
Что мне не хватает?
Я просмотрел различные примеры через Google и StackOverflow и сравнил их с моим кодом, но я не вижу ничего необычного в настройке.
Вот соответствующие биты кода ... запросы mysql работают, запросы oracle - нет.
init.py
from flask_sqlalchemy import SQLAlchemy
database_url = "mysql+pymysql://root:xxxx@localhost:3306/db1"
dbbind_url = "oracle://dbuser:xxxx@10.0.0.1:1521/db2"
app.config["SQLALCHEMY_DATABASE_URI"] = database_url
app.config["SQLALCHEMY_BINDS"] = {
'oracle': dbbind_url
}
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
models.py
## Mysql Model (working)
class CUSTOMERS (db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
## Oracle Model (not working)
class ACCOUNT(db.Model):
__tablename__ = 'ACCOUNT'
__bind_key__ = 'oracle'
account_id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True)
account = db.Column(db.String(400), nullable=False)
views.py
@app.route('/helper', methods=['GET','POST'])
def helper_search():
form = HelperSearchForm()
if form.validate_on_submit():
accountquery = form.account.data
print (accountquery)
accountInfo = ACCOUNT.query.filter_by(ACCOUNT=accountquery).first()
return redirect(url_for('helper_accountdetail',account=accountInfo))
Структура таблицы "CUSTOMERS" (MYSQL)
id INT 11
name VARCHAR 255
Структура таблицы "ACCOUNT" (Oracle)
ACCOUNT_ID NUMBER(11,0)
ACCOUNT VARCHAR2(400 BYTE)
Текущийрезультат: NameError: имя 'ACCOUNT' не определено
Ожидаемый результат: Запрос возвращается с результатом.