6

簡単なテストアプリでflask-sqlalchemyを試しています。私はSQLサーバーを実行しており、次のようにSQLalchemyを使用してFlaskから接続できます。

from flask import render_template
from app import app, db

@app.route('/')
@app.route('/index')
def index():

    people = list(db.session.execute("select top 10 * from people where ppl_username IS NOT NULL"))

ただし、SQL疑似言語とSQLalchemyのORM部分を使用してクエリを実行したいと思います。これは既存のデータベースであるため、独自のクラスを作成してデータベースを生成したくないので、既存のデータベースを反映してその方法でアクセスしたいと思います。APIドキュメントでreflectメソッドを見つけましたが、それをどのように(そしてどこで)使用するかがわかりません。

これを行う方法を疑問に思うことに加えて; 私も疑問に思っています:

  • データベースの反映は、すべてのリクエストで発生しますか、それともアプリケーションの開始時にのみ発生しますか?(これは大きなデータベースであるため、すべてのリクエストでショーストッパーになります)
  • DjangoのinspectDB()のように、データベースからクラスのコードを生成し、後で使用するために保存することは可能ですか?

ありがとう、

4

1 に答える 1

4

はい、それはすべて可能です。私はsqlautocodeを使用して、あなたが話していることを正確に実行します。sqlalchemyコードを生成してsqlalchemyにテーブル/列を作成し、ファイルに配置します。インストールして、コマンドラインから実行するだけです。

これにより、Webアプリケーションの既存のmysqlデータベースからモデルsqlalchemyモデルが生成され、ファイルalchemy_models.pyが作成されます。

sqlautocode mysql://<dbuser>:<pass>@localhost:3306/<dbname> -o alchemy_models.py

mysql://ビットはSAで接続を生成するための単なる構文であることに注意してください

お役に立てれば

于 2012-11-18T02:30:52.417 に答える