我一直在努力解决我遇到的SQLAlchemy问题,并将其缩小到这个简单的脚本:
#!/usr/bin/env python
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "oracle+cx_oracle://<user>:<password>@<sid>"
db = SQLAlchemy(app)
class Instance(db.Model):
id = db.Column(db.Integer, primary_key=True)
with app.app_context():
instance = db.session.query(Instance).filter(Instance.id == 105250).first()
print(instance)
id为105250的实例确实存在于数据库中,但我得到的结果非常令人惊讶:
% x.py
<__main__.Instance object at 0x7f65461cdef0>
% x.py
<__main__.Instance object at 0x7f0c09aa2ef0>
% x.py
None
% x.py
<__main__.Instance object at 0x7fd1c7a9eef0>
% x.py
None
任何人都可以解释如何预防和解决这种不稳定的行为吗?
答案 0 :(得分:0)
我找到了根本原因。如果有人遇到同样的问题,请在此处发布。
问题是由不稳定的cx_Oracle 5.2.0驱动程序引起的。将其降级为5.1.3解决了这个问题。