sql >> データベース >  >> RDS >> PostgreSQL

sqlalchemyを使用して、リクエストごとにデータベースエンジンに動的にバインドする方法

    グローバルオブジェクト(マッパー、メタデータ)をユーザー固有の接続にバインドするのは良い方法ではありません。スコープセッションを使用するだけでなく。リクエストごとに新しいセッションを作成し、ユーザー固有の接続を使用するように構成することをお勧めします。次のサンプルは、データベースごとに個別のメタデータオブジェクトを使用することを前提としています。

    binds = {}
    
    finance_engine = create_engine(url1)
    binds.update(dict.fromkeys(finance_metadata.sorted_tables, finance_engine))
    # The following line is required when mappings to joint tables are used (e.g.
    # in joint table inheritance) due to bug (or misfeature) in SQLAlchemy 0.5.4.
    # This issue might be fixed in newer versions.
    binds.update(dict.fromkeys([Employee, Customer, Invoice], finance_engine))
    
    staff_engine = create_engine(url2)
    binds.update(dict.fromkeys(staff_metadata.sorted_tables, staff_engine))
    # See comment above.
    binds.update(dict.fromkeys([Project, Hour], staff_engine))
    
    session = sessionmaker(binds=binds)()
    


    1. 選択した行をPostgresのCSVファイルの値で更新するにはどうすればよいですか?

    2. OracleでのLIKEを使用したアクセントと大文字と小文字を区別しない照合

    3. Laravel移行エラー:構文エラーまたはアクセス違反:1071指定されたキーが長すぎました。キーの最大長は767バイトです

    4. MySQL ON DUPLICATE KEY-最後の挿入ID?