我希望使用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))
“客户”表结构(MYSQL)
id INT 11
name VARCHAR 255
“ ACCOUNT”表结构(Oracle)
ACCOUNT_ID NUMBER(11,0)
ACCOUNT VARCHAR2(400 BYTE)
当前结果是: NameError:名称“ ACCOUNT”未定义
预期结果是: 查询返回结果。