この環境を利用するのは初めてです。
私が使用したいと思っている SQLAlchemy の部分は、autoload = True で Table オブジェクトを使用してデータベースをクエリできるようにするものです。私のテーブルはすでにDB(mysqlサーバー)に存在し、フラスコモデルを定義して作成されていないため、これを行っています。
私はすべてのドキュメントを調べましたが、答えが見つからないようです。ここにいくつかのコードがあります:
app = Flask(__name__)
app.config.from_object(__name__)
metadata = None
def connect_db():
engine = create_engine(app.config['DATABASE_URI'])
global metadata
metadata = MetaData(bind=engine)
return engine.connect()
@app.before_request
def before_request():
g.db = connect_db()
@app.teardown_request
def teardown_request(exception):
g.db.close()
ここで、メタデータという名前のグローバル var を使用する理由を疑問に思われるかもしれません。さらにコードを追加します。
@app.route('/test/<int:id>')
def test(test_result_id):
testTable = Table('test_table', metadata , autoload=True)
ご覧のとおり、関数内からアクセスするには、そのオブジェクトをグローバルにする必要があります。
また、必要な各関数で同じ var testTable を宣言しています。これは正しいアプローチではないと感じています。私のようなケースに対するベストプラクティスのアドバイスは見つかりませんでした。
皆さんありがとう!