SQLAlchemyを介したデータベース呼び出しはブロックされ、同期コード以外での使用には適していないという印象を受けています。私は正しいですか(そうでないことを願っています!)、または非ブロッキングになるように構成する方法はありますか?
gevent を使用して、非ブロッキングスタイルでSQLAを使用できます。 psycopg2を使用した例を次に示します。psycopg2を使用します コルーチンサポート :
https://bitbucket.org/zzzeek/green_sqla/
pymysql でも同じアイデアを使用していると聞きました。 pymysqlは純粋なPythonであり、ソケットライブラリを使用するため、geventはソケットライブラリに非同期のパッチを適用します。
グリーンレットの助けがなければ、asyncioの文脈では、答えはノーです。
ただし、asyncioではSQLAlchemyの一部しか使用できません。 GINOプロジェクト の例を見つけてください。ここでは、エンジンと完全な実行コンテキストのないSQLAlchemyコアのみを使用して、非同期で単純なORMを作成しました。