python-3.x - SQLAlchemy-Flask 绑定不起作用 - NameError: name 'TABLE' is not defined
问题描述
我正在寻找使用 Flask-SQLAlchemy Bind 连接到辅助 Oracle 数据库。我收到一个错误,说我要连接的表没有定义,尽管它是在我的模型中定义的,并添加了适当的绑定配置。这是具体的错误: NameError: name 'ACCOUNT' is not defined 。此错误发生在任何尝试实际查询数据库之前。
我错过了什么?
我通过 Google 和 StackOverflow 浏览了各种示例,并将它们与我的代码进行了比较,但我没有看到任何与设置不同的地方。
以下是相关的代码... mysql 查询有效,oracle 查询无效。
初始化文件
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)
模型.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)
视图.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
“帐户”表结构 (Oracle)
ACCOUNT_ID NUMBER(11,0)
ACCOUNT VARCHAR2(400 BYTE)
当前结果是:NameError: name 'ACCOUNT' is not defined
预期结果是:查询返回结果。
解决方案
推荐阅读
- react-native - React Native Flatlist 中的低滚动性能和空白问题
- ag-grid - 用户仅在 aggrid 中触发事件
- ruby - 如何在另一个类中访问一个类的实例变量的函数?
- python - Python根据列中的值是否满足条件拆分熊猫数据框
- node.js - 我使用 Node.js 的 Web 应用程序没有加载到我的本地主机上
- amazon-web-services - AWS CloudWatch 警报操作一次,触发 lambda 3 次
- ansible - 如何识别使用ansible安装的操作系统的硬盘分区?
- typescript - 如何使用动态确定的泛型类型调用 Typescript 泛型方法?
- javascript - Django/Python 将 content.innerHTML 更改为 src 页面
- reactjs - 当我在 Digital Ocean 服务器上使用 API 调用时,.NET Core CORS 策略块